Fragment.setTargetFragment

FragmentからFragmentに通知したり、Fragmentから別のFragmentのメソッドを呼ぶのに、Fragment.setTargetFragmentを使って、あらかじめ自身のFragmentを登録しておくという処理をする。

Fragment  |  Android Developers

strings.xmlで、

TextViewとButton2個ずつ。
fragment1_main.xmlで、

TextViewとButtonを用意。
fragment2_main.xmlも、

同様。
activity_main.xmlは、

FrameLayoutだけ。
Fragment1.javaは、

Buttonを押されたら、Fragment2をadd。
Fragment2.newInstanceにthisを渡すようになっているのがポイント。
customMethodをFragment2から呼び出したい。
Fragment2.javaは、

newInstanceの中で引数のtargetをfragment2.setTargetFragmentで登録。
このtargetはFragment1だから、これを取り出せたら、Fragment1を操作できる。
Fragment2のButtonが押されたら、getTargetFragmentでtargetFragmentとして取り出すことが出来る。
Fragment1にキャストが必要なのが面倒だが、fragment1.customMethodを呼び出せる。
MainActivity.javaは、

起動時、Fragment1を追加。

起動時
起動時

起動時。
Button1を押すと、

Fragment2が上に被さる。(addなのでこうなっちゃう。)
Fragment2が上に被さる。(addなのでこうなっちゃう。)

Fragment2が上に被さる。(addなのでこうなっちゃう。)
今度はButton2を押すと、

customMethodを呼び出せた。
customMethodを呼び出せた。

customMethodを呼び出せた。

Sample/android/Fragment/setTargetFragment/src/Fragment at master · bg1bgst333/Sample · GitHub