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のクラスの新しいインスタンスを生成して返すので注意。