1. ホーム
  2. Android

Androidです。ViewPagerで現在のインターフェイスのFragmentを取得する

2022-02-17 22:59:07

プロジェクトでは、ViewPagerに同じ種類のFragmentを表示する必要があり、その数は動的ですが、PagerAdapterはgetCurrentFragmentのようなメソッドを提供してくれません。

データとソースコードを見ると、PagerAdapterにsetPrimaryItem(ViewGroup container, int position, Object object)というメソッドがあり、そこで現在のFragmentを取得できるので、それを記録し、getCurrentFragmentメソッドを我々のPagerAdapterに記述して、現在のインターフェースのFragmentを外部に取得するようにしているのです。


public class XXXPagerAdapter extends FragmentStatePagerAdapter {

    private XXXFragment mCurrentFragment;
    private List<XXX> mList;

    public XXXPagerAdapter(FragmentManager fm, List<XXX> list) {
        super(fm);
        mList = list;
    }

    @Override
    public Fragment getItem(int position) {
        return XXXFragment.newInstance(mList.get(position));
    }

    @Override
    public int getCount() {
        return mList == null ? 0 : mList.size();
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        XXXFragment fragment = (XXXFragment) super.instantiateItem(container, position);
        return fragment;
    }
    
    //---------------------- Here's the kicker -----------------

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        mCurrentFragment = (XXXFragment) object;
        super.setPrimaryItem(container, position, object);
    }


    public XXXFragment getCurrentFragment() {
        return mCurrentFragment;
    }
}





ここでは、FragmentStatePagerAdapter は PagerAdapter を継承しています。


Activityでは、このように呼び出すだけです。

mPagerAdapter.getCurrentFragment();








参考:http://www.cnblogs.com/englefly/p/4222953.html