ViewPagerを使うといい感じにFragmentを切り替えられていいけど、Activityから今表示されているFragmentを取得することができなくて、もやもやしてたけど、いい方法がQiitaに掲載されてたので、その備忘録。
以下、詳細。
PagerAdapterからFragmentを取得するのは、instantiateItemを使う
実は、PagerAdapterにそういったmethodが用意されているよう。
PagerAdapter#instantiateItem(ViewGroup container, int position)
全体のサンプルは以下のような感じ。
public class MainActivity extends Activity { private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(new MyPagerAdapter(getFragmentManager())); ・・・ } //今のFragmentに対してなんかしたい処理 private void fooBar() { //今の位置を取得 int position = mViewPager.mViewPager.getCurrentItem(); //アダプターを取得 MyPagerAdapter adapter = (MyPagerAdapter) mViewPager.getAdapter(); //instantiateItem()で今のFragmentを取得 Fragment fragment = (Fragment) adapter.instantiateItem(mViewPager, position); ・・・・ } public class MyPagerAdapter extends FragmentStatePagerAdapter { ・・・ }
以上!!