Android-viewpager重新设置adapter

if (mVpEbooks.getAdapter() != null) {
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            Bundle bundle = new Bundle();
            int index = mVpEbooks.getAdapter().getCount();
            String key = "index";
            while (index >= 0) {
                bundle.putInt(key, index);
                ft.remove(fm.getFragment(bundle, key));
                index--;
            }
            ft.commit();
        }

或者

//先保证ViewPager之前已设置过Adapter,这样才有可能存在缓存
if (mContentVp.getAdapter() != null) {
	//获取FragmentManager实现类的class对象,这里指的就是FragmentManagerImpl
    Class<? extends FragmentManager> aClass = getChildFragmentManager().getClass();
    try {
    	//1.获取其mAdded字段
        Field f = aClass.getDeclaredField("mAdded");
        f.setAccessible(true);
        //强转成ArrayList
        ArrayList<Fragment> list = (ArrayList) f.get(getChildFragmentManager());
        //清空缓存
        list.clear();
        
        //2.获取mActive字段
        f = aClass.getDeclaredField("mActive");
        f.setAccessible(true);
        //强转成SparseArray
        SparseArray<Fragment> array  = (SparseArray) f.get(getChildFragmentManager());
     	//清空缓存
        array.clear();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
//再次设置ViewPager的Adapter
mContentVp.setAdapter(new PageAdapter(getChildFragmentManager()));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值