FragmentPagerAdapterをおいたActivityから現在表示されているFragmentを取得したい
FragmentPagerAdapter
を使って画面の一部だけを遷移させていくとき、その中の1つの画面から他のアプリ等にstartActivityForResult
でIntent
を飛ばして連携したい部分がありました。
Fragment
にonActivityForResult()
メソッドってあったかしら、というところから戸惑ったのですが、Fragment
にもonActivityForResult()
メソッドはあります。
Activity
のonActivityForResult()
からFragment
を指定して呼びだしてあげればよいです。
じゃあ、FragmentPagerAdapter
でいま表示してるFragment
ってどう指定するの...って調べたら下記が出てきたのでメモ。
FragmentPagerAdapter
ではFragment
と追加するとき、下記のようにFragment
につけるタグの名前を生成しているそうで、このタグを利用すればよいようです。
private static String makeFragmentName(int viewPagerId, int index) { return "android:switcher:" + viewPagerId + ":" + index; }
なお、FragmentManager#findFragmentByTag()
を使い、FragmentPagerAdapter
のgetItem(int position)
は基本的に指定した位置に設定されているFragmentのクラスの新しいインスタンスを生成して返すので注意。