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