我使用带有tablayout的viewpager,我在其中添加了一些带有适配器的片段。 在我的片段中,oncreateview和onviewcreated被称为。
我的问题是:当用户滚动到tablayout的下一个片段并返回到第一个片段时,是否会再次创建一个片段?或者片段是在viewpager和tablayout初始化时创建的,然后不会改变?
我问,因为我想从tablayout的片段中更改一个值,并且该更改必须更改tablayout的另一个片段。
如果我的问题不明确,请告诉我,我会尝试更好地解释。
答案 0 :(得分:1)
ViewPager中有一个名为setOffscreenPageLimit
的属性。
您可以在空闲状态下设置应保留到视图层次结构中当前页面任一侧的页数。超出此限制的页面将在需要时从适配器重新创建。
viewpager.setOffscreenPageLimit(X)
这意味着它会在当前页面的任意一侧创建X
个页面。一旦它超出了您的页面范围,它将重新创建它。
答案 1 :(得分:0)
默认情况下,当前页面旁边的1页保留在内存中#34;#34;而不是重新创造。您可以通过以下行更改:
viewPager.setOffscreenPageLimit(YOUR_LIMIT);
建议您将此LIMIT保持为低,您可以阅读here。
在指定限制范围内的碎片将保留在内存中#34;并且不会被重新创建。但是,将重新创建超出此限制的碎片。