如何获取ViewPager当前的Fragment

有时候我们都需要从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的情况,因为有可能还没有初始化,或者已经被销毁掉了。

转载请附上本文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容