我想在viewpager中阻止片段重新创建,默认情况下,每次导航到viewpager中的片段时,android都会创建该片段的新实例。 setOffscreenPageLimit(x)可以解决这个问题,但我不想在activity的onCreate中加载更多的片段。有没有想过解决这个问题并在下次选择后维护片段实例?
View Pagers有两个最常用的类:
他们在很多方面都看起来很像,但不是全部。
你需要的是FragmentPagerAdapter
这将保留Fragment你想要的,而不是每次都重新创建,如下面的引用从官方文档中说:
PagerAdapter的实现,它将每个页面表示为片段,只要用户可以返回到页面,该片段就会持久保存在片段管理器中。
并且在同一文档中:
用户访问的每个页面的片段将保存在内存中...
虽然记得使用它,但是内存将是你的责任,你必须管理你的视图的内存,如果它们很多就检查你拥有的页面数,以这种方式显示50页不是一个好主意。只有不到10个(Tabs可能是它的最佳选择)。你很好。内存管理是唯一需要注意的事项,因为文档本身说:
这可能导致使用大量内存,因为片段实例可以保持任意数量的状态。对于更大的页面集,请考虑
FragmentStatePagerAdapter
。
因此,将适配器更改为FragmentPagerAdapter
,您的片段将保留在内存中,而不是重新创建。
尝试设置Fragment.setRetainInstance(true)。如果使用FragmentPagerAdapter,这将导致现有片段“生存”而不会重新创建。它会分离并重新连接。