您的位置:首页 > 移动开发 > Android开发

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

2016-05-20 16:27 519 查看
在项目中,有时会用到在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<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;
}

//----------------------下面才是重点-----------------

@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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: