Android:ViewPager中获取当前界面的Fragment

在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment类似的方法。

通过查阅资料和看源码,PagerAdapter中有个setPrimaryItem(ViewGroup container, int position, Object object) 方法,我们在这里面将就可以获得当前的Fragment,我们将其记录下来,然后在自己的PagerAdapter中写个getCurrentFragment() 方法,就可以在外部获取当前界面的Fragment。


public class XXXPagerAdapter extends FragmentStatePagerAdapter {

    private XXXFragment mCurrentFragment;
    private List mList;

    public XXXPagerAdapter(FragmentManager fm, List 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;
    }
    
    //----------------------下面才是重点-----------------

    @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


你可能感兴趣的:(Android,Android_控件相关)