Android ViewPager之间嵌套,滑动时出现Crash

ViewPager中嵌套了ViewPager,滑动到子ViewPager时会发生闪退并报错:

java.lang.IllegalStateException
Fragment no longer exists for key f0: unique id 2b790332-65df-4f3d-88be-36c4eaa2fb91

这是因为默认状态下ViewPager滑动时,对子元素的缓存只有左右一边一个

当子ViewPager是当前一页左边或者右边第二个时,系统就会回收这个子ViewPager

回收后,滑动企图再加载子ViewPager时,如果子ViewPager使用的是FargmentStatePagerAdapter,就会出现上述问题,猜测是Adapter内部缓存管理问题

解决方案

1、将子ViewPager的Adapter改为FargmentPagerAdapter

2、判断ViewPager需要加载的子元素最大数量,例如最多加载5个,然后调用方法增加缓存数量

viewPager.setOffscreenPageLimit(5);

都可以解决问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值