有時候我們都需要從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的情況,因為有可能還沒有初始化,或者已經被銷毀掉了。