くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

ViewPagerで表示されているFragmentを取得する

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 {
        ・・・
    }

以上!!

[PR] めもらばではこんなあぷりを作っています!

参考にしたサイト様