有时候我们都需要从ViewPager中获得当前的Fragment,可惜的是Api里并没有直接获取的方法,所以需要我们去造一个,我们可以FragmentPagerAdapter入手:
public abstract class FragmentPagerAdapterCompat extends FragmentPagerAdapter {
private SparseArray<Fragment> fragments;
public FragmentPagerAdapterCompat(FragmentManager fm) {
super(fm);
fragments = new SparseArray<>(getCount());
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
fragments.put(position, fragment);
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
fragments.remove(position);
}
public Fragment getFragment(int position) {
return fragments.get(position);
}
}
最后
是的,就这么简单,需要获取当前的第几个fragment就调用getFragment(int)吧,不过要注意要处理Null的情况,因为有可能还没有初始化,或者已经被销毁掉了。
网友评论