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);
都可以解决问题