使用ViewPager + TabLayout + Fragment三件套来进行界面切换,刚开始只有两个fragment需要切换,一切正常,然后增加了一个fragment,切换前两个就正常,切换第三个然后想切换回第一个就崩溃了。
原因是ViewPager默认会缓存两个fragment的实例,超出2个后会把最先创建的销毁掉,然后切换回第一个时会重新创建fragment,但是调用的构造函数不是预期的构造函数,导致一些初始化的工作没有完成,于是崩溃了。
解决方法:
binding.vp.setOffscreenPageLimit(3);