Android

FragmentTransaction.commitAllowingStateLoss

非同期処理とフラグメント操作を組み合わせると少し問題が発生する。 前回の項をベースに、CustomAsyncTask.javaを追加し、適当な非同期処理として例えば10秒経ったら、MainActivityに定義したreplaceFragmentというメソッドを呼ぶ。 MainActivity.javaで、 …

FragmentTransaction.commit

FragmentTransaction.commitで、追加や削除などのフラグメント操作処理を確定させる。FragmentTransaction | Android Developersこのcommitが無いと、フラグメントが追加されない。 strings.xmlで、とし、fragment1_main.xmlで、TextViewだけ。 fragment2_ma…

FragmentTransaction.attach

FragmentTransaction.attachは、FragmentTransaction.detachとは逆に、FragmentとViewを再び紐づける。FragmentTransaction | Android Developersまあ、Viewの再生成だよね。 activity_main.xmlで、Buttonを3つに増やしている。 (strings.xmlはもう省略。) M…

FragmentTransaction.detach

FragmentTransaction.detachは、Fragmentから紐づく"View"を取り外す。FragmentTransaction | Android DevelopersFragment.onDetachは、紐づく"Activity"との関係を解除した時に呼ばれるので、実は無関係。 ただ、今回はFragment.onDetachのコードをベースに…

Fragment.onDetach

Fragment.onDetachは、Fragmentとそれに紐づいたActivityの関係が解除された時に呼ばれる。Fragment | Android Developersremoveやreplaceなど、Fragmentが破棄された時に呼ばれる。 onAttachの対となるもの。 Fragment.onDestroyViewのコードをベースに、st…

FragmentManager.getFragment

FragmentManager.getFragmentで、保存しておいたFragmentの参照を取得する。FragmentManager | Android Developers改めて、今挿入しているFragmentをmCurrentFragmentとして参照を持ち、それを操作するような場合、どのような形がいいかを検証していく。 ま…

FragmentManager.putFragment

FragmentManager.putFragmentで、Fragmentの参照を一応保存できる。FragmentManager | Android Developersstrings.xmlで、Activity用の"Button1"と、Fragment用の"FButton1"と、TextViewの"Fragment1"。 fragment1_main.xmlは、TextViewとButton。 activity_…

Fragment.getTargetRequestCode

Fragment.setTargetFragmentには、リクエストコードを指定することも出来た。 で、このリクエストコードは、Fragment.getTargetRequestCodeを使って取得できる。Fragment | Android DevelopersこれとFragment.onActivityResultを使うことで、ターゲットへの…

Fragment.getTargetFragment

Fragment.getTargetFragmentで、登録したFragmentを取得できる。Fragment | Android Developers前回はaddだったので、Fragment1のインスタンスが残っている状態のため参照することが出来たが、replaceの場合はどうだろうか。 Fragment1.javaで、addをreplace…

Fragment.setTargetFragment

FragmentからFragmentに通知したり、Fragmentから別のFragmentのメソッドを呼ぶのに、Fragment.setTargetFragmentを使って、あらかじめ自身のFragmentを登録しておくという処理をする。Fragment | Android Developersstrings.xmlで、TextViewとButton2個ずつ…

Fragment.onActivityResult

Fragment.startActivityForResultの結果は、Fragment.onActivityResultで受け取る。Fragment | Android DevelopersMainActivity.javaは、onActivityResultはあるけど、ここにはこない。 SubActivity.javaは、messageとして"ABCDE"、そしてRESULT_OKをセット…

FragmentTransaction.hide

FragmentTransaction.hideは、Fragmentの非表示だけであり、削除はしない。FragmentTransaction | Android Developersなので、onDestroyやonDestroyViewなどのライフサイクルは発生しない。 FragmentTransaction.removeの項をベースに、Buttonが押されたら、…

Activity.onActivityResult

Activity.startActivityForResultでの処理結果は、Activity.onActivityResultで受け取る。Activity | Android Developersいまさらの感じあるけど、SampleのActivity.startActivityForResultの項をベースに、SubActivityのButton押したら、RESULT_CANCELEDを…

Fragment.onDestroyView

Fragment.onDestroyViewは、FragmentのViewが破棄される時に呼ばれる。Fragment | Android DevelopersFragmentTransaction.removeで、Fragmentは破棄されるので、そのViewも破棄される。 よってonDestroyViewが呼ばれる。 SampleのFragmentTransaction.remov…

Fragment.startActivityForResult

FragmentにstartActivityがあるのだから、startActivityForResultもある。Fragment | Android Developersまずは、Activity.startActivityForResultを使う。 Fragment1.javaで、 package com.bgstation0.android.sample.fragment_; import android.app.Fragme…

FragmentTransaction.remove

FragmentTransaction.removeで、Fragmentを削除する。FragmentTransaction | Android Developers削除なので、Fragmentのライフサイクルに影響を及ぼし、onDestroyが呼ばれる。 strings.xmlで、Activityにbutton1_text、Fragmentにfragment1_textview_text。 …

Fragment.startActivity

FragmentにもstartActivityがあり、これでActivityを起動できる。Fragment | Android Developersまずは、AndroidManifest.xml。activityタグで".SubActivity"を追加。 strings.xmlは、Fragment1のTextViewとButton、SubActivityのTextView。 fragment1_main.…

FragmentManager.findFragmentById

FragmentManager.findFragmentByIdは、『Fragmentを挿入している可能性のあるFrameLayoutなどのLayoutのID』からFragmentを見つけるためのメソッド。FragmentManager | Android デベロッパー | Android Developers普通、『FragmentのID』かとおもうけど、そ…

Fragment.onAttach

Fragment.onAttachは、FragmentがActivityにアタッチされた時に呼ばれる。Fragment | Android Developersアタッチって表現が難しい(紐付けられると言えばそう)のだが、ここに来ると、Activityを参照できるようになるらしい。 それはさておいて、Activityへの…

Fragment.onInflate

カスタムビューと同様に、FragmentにおいてもAndroid XMLで独自の属性をコード側に渡すことが出来る。 Fragment.onInflateで、もらえる。Fragment | Android Developersstrings.xmlで、fragment1_textview_textで、Fragment1と定義。 attrs.xmlで、Fragment1…

TypedArray.recycle

TypedArrayは、使い終わったらrecycleする必要がある模様。TypedArray | Android Developers以前のmixedarray取得で、ログやデバッガでrecycle前後の違いを見てみる。 MainActivity.javaで、こんな感じでどうなるか。 beforebefore。 こうなっているこうなっ…

Resources.obtainAttributes

Resources.obtainAttributesで、CustomViewの独自属性の値を取得する。Resources | Android Developersactivity_main.xmlは、

TypedArray.getColor

TypedArray.getColorで、指定されたインデックスの値を色コード16進数整数として取得。TypedArray | Android Developersとはいえ、ただのintとして返される。 activity_main.xmlで、idにtextview1と付けて、 MainActivity.javaで、2番目の色cをtextview1.set…

TextView.setTextColor

TextView.setTextColorで、TextViewのテキストの色をセットできる。TextView | Android DevelopersMainActivity.javaで、tv.setTextColorでColor.REDをセット。 Color.REDなどの色はint値。 上のテキストが赤くなってる上のテキストが赤くなってるSample/and…

TypedArray.getString

TypedArray.getStringで、指定されたインデックスの値を文字列として取得。TypedArray | Android DevelopersMainActivity.javaで、0番目の整数値に加えて、1番目の文字列も取得。 1番目の"ABC"を取得出来てる1番目の"ABC"を取得出来てる。Sample/android/Typ…

TypedArray.getInt

TypedArray.getIntで、指定されたインデックスの値をint値として取得。TypedArray | Android Developersarrays.xmlは、整数、文字列、色。 MainActivity.javaは、mixedarray.getIntで0番目を取得し、ログ出力。 123を取得出来てる0番目の123を取得出来てる。…

TypedArray

TypedArrayは、型情報付きの配列オブジェクト。 中身どうなってるかもうちょっとみる。TypedArray | Android Developersarrays.xmlを、 <resources> <array name="mixedarray"> <item>123</item> <item>456</item> <item>789</item> </array> </resources> とすると、 123, 456, 789が見える123と456と789が、少し間隔を開けて、見える。

Resources.obtainTypedArray

異なる要素型が混在する配列の場合は、TypedArrayで取得し、1つ1つの要素を適切な型で取得しなければならない。 Resources.obtainTypedArrayを使って、TypedArrayを取得する。Resources | Android Developers Android, arrays.xml で定義した配列を利用する …

Resources.getStringArray

文字列配列もXMLで定義できる。 Resources.getStringArrayを使う。Resources | Android Developersarrays.xmlで、string-arrayタグを使う。 itemの値の文字列にダブルクォートを付けない。 MainActivity.javaで、res.getStringArrayに、R.array.abcdefghiを…

Resources.getIntArray

リソースのXMLは、整数配列も定義できる。 整数配列の取得は、Resources.getIntArrayを使う。Resources | Android DevelopersAndroid XMLを追加し、 arrays.xmlと名付けるarrays.xmlと名付ける。 arrays.xmlで、integer-arrayタグで、名前は"onetwothree"。 …