2016_01_05週_Parcelable内のwriteとreadの順番他
毎日メモはしてるので土日にまとめて公開することにします。 一週間経つだけでも全然忘れてしまうな…。ブログに公開することで、自分が目に通す回数を増やしたりできればいいな。 良い復習にはなりそう。
JVMとJREの違い
聞かれてわからなかった・・・
http://www.mltlab.com/wp/archives/406www.mltlab.com
Dalvikとは
http://www.wdic.org/w/TECH/Dalvikwww.wdic.org
WebViewのonReceivedErrorが呼ばれない
API 23ではonReceivedError
の仕様が変わったそう。
でも新しいonReceivedError
だとネットワークエラー時に呼ばれない。
complieSdkVersionを23にすると非推奨の打ち消し線が入るのでなんでこうなっているのかわからなかった
何が原因なんだろうか、なにかのverな気がする…
結局compileSdkVersionを22に下げても、6.0端末で試してもこの新しいonReceivedError
は呼ばれなかった
LinearLayoutでparentBottomを表現する
http://ichitcltk.hustle.ne.jp/gudon2/index.php?pageType=file&id=Android055_layout4ichitcltk.hustle.ne.jp
特定のコミットからブランチを切る
デフォルトのDialogを使うのがよくない理由
getFragmentManagerとgetSupportFragmentManager
getSupportFragmentManager().executePendingTransactions(); if (getSupportFragmentManager().findFragmentByTag(DatePickerDialogFragment.TAG) != null) { return; } DatePickerDialogFragment.newInstance().show(getSupportFragmentManager(), DatePickerDialogFragment.TAG);
ダイアログの二重起動での制御について、
findFragmentByTag()
がいつもnullで帰ってきてしまう問題。
今回はsupportのDialogFragmentを使ってるので、FragmentManagerを呼ぶ時はサポートの方で呼ばなくては返ってくるFragmentManagerが異なる。
getFragmentManager()
もgetSupportFragmentManager()
も呼べるため、なぜ合っていないのか気づきにくかった.
supportlibraryを使ってるのかそうでないのかみたいなところが意外と時間を食われる元な経験が最近多い…
久しぶりにgitでミスった
最近revertとかresetなど多用していてdiffがすごいことになった死にたい
masterとheadのdiffを一覧で見る
git diff master..head --stat
一度pushした後にローカルでresetしたりするとnon-fast-forward
で怒られる
git push origin :hoge
で空をremoteのhoge
ブランチにプッシュすることになるので、リモートのブランチが消える
git push origin hoge
でもう一度pushすればいい
特定のファイルだけmergeする
文字列のちょっと凝った操作
意外とよく使うけどすぐ忘れちゃう
http://y-anz-m.blogspot.jp/2011/03/android-xml.htmly-anz-m.blogspot.jp
どのタイミングで状態が変わるのかコメントに付け足しておく
void hoge(){ if(mDisable){ return } mDisable = true; ・ ・ ・
のようなインスタンスフィールドのboolean値などはなるべくインスタンスフィールドに持たない方がよいと言われてるくらいだから、 どの状態で変わるのかはコメントしておいたほうがあとで見た人(自分も含む)が理解しやすそう。
今回は親のクラスで使われている変数だったため、なおさら。
license情報
- リリース用のものだけでOK(リリース用apkに含まれるもののみ)
- テスト用・デバッグ時にしか使ってないもの(loggingのものなど)は表示しなくてよい
AndroidManifest Activityの設定
http://docs.monaca.mobi/cur/ja/reference/reference/config/android_configuration/#manifest-xmldocs.monaca.mobi
自動でlabelがついてくるけど、特になくてもよさそう。ある場合は、lancherの時アプリ名として表示される。 なかったらデフォルトのものが表示される。
Acitivityのデフォルトに入っている値を利用する
知らなかったけど結構、元々用意されているものが多い。自分で定数設定しなくて済むので、いろいろ書き留めておきたい。
ActivityのRESULT_OK ex)Activity.RESULT_OK
MVP設計におけるDtoを持つ場所
Activityにインナークラスで次画面に渡すためのインナークラスを持っていたところ、インターフェースに持つよう指摘された
理由としては、Activity / Fragment に関係なく、View に固有する dto であれば、View のインターフェースの定義するのが望ましいからです。
どこに依存している情報なのか?を考える。
strings内のCDATA内でのエラー
ライセンスページを作ってる際にエラーが出た
インターフェース内の省略範囲
- インターフェース内に定義した内部クラスに
public static
は省略できる - コンパイルすると自動的に付与してくれる
Parcelable内のwriteとreadの順番
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mUrl); dest.writeInt(mTitle); } public ParamDto() { } protected ParamDto(Parcel in) { mUrl = in.readInt(); mTitle = in.readInt(); }
このwriteとreadの順番が逆になっていると変数に入ってくる情報が変わってくる
Linearlayout内にdivider
真ん中だけ動的に区切り線をいれたいが、linearlayoutにviewをaddviewをしても、反映されなかった
dividerというものを設定できるみたいなので、これ便利
./gradlew app depencies
で依存しているライブラリを表示する gradleコマンド
ビルドが通らないソースをコミットしない
当たり前だけど、タイポミスがあったままコミットしてしまった。
javadocのtips
こんなのもある blogs.oracle.com
inflateの引数
inflate()の第三引数の話。
第三引数のboolean attachToRoot
の値は、falseにしないと第二引数に渡した親viewが返り値として返ってくる。
http://developer.android.com/intl/ja/reference/android/view/LayoutInflater.html#inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean)developer.android.com
scrollView内のlinearLayout
scrollViewもその中のlinearlayoutいずれもwrap_content
が推奨されている
実際にscrollView内のlinearLayoutにmatchをつけてもmatchにならない
<style name="TaskDetailButton" parent="@style/Widget.AppCompat.Button.Borderless">