0

我使用viewlayter和tablayout来添加一些片段和适配器。 在我的片段oncreateview和onviewcreated被调用。在查看预览器中总是重新创建“查看”的片段

我的问题是:当用户滚动到tablayout的下一个片段并返回到第一个片段时,是否再次创建片段?或者在viewpager和tablayout的初始化时创建片段,然后不更改?

我问,因为我想更改tablayout的片段的值,并且该更改必须在tablayout的另一个片段中进行更改。

如果我的问题不清楚,告诉我,我会尽力解释更好。

回答

0

默认情况下,当前页面旁边的1页保留在“内存”中,不会重新创建。您可以更改通过以下行:

viewPager.setOffscreenPageLimit(YOUR_LIMIT);

建议您保留此限制低,你可以读到它here

在指定限制范围内的碎片将被保留在内存中,不会被重新创建。但超出此限制的碎片将被重新创建。

+0

谢谢,所以如果我想在每个片段滚动重新创建所有片段,我把viewPager.setOffscreenPageLimit(1); ? – Jey10

+0

根据这个方法的实现你不能使它小于1.所以至少有一个片段总是“在内存中”。 –

+0

所以我不能有一个片段重新创建到前面的第一个片段? – Jey10

1

在ViewPager中有一个名为setOffscreenPageLimit的属性。

您可以设置应该保留在处于空闲状态的视图层次结构中当前页面任一侧的页数。超出此限制的页面将在需要时从适配器重新创建。

viewpager.setOffscreenPageLimit(X) 

这意味着它会创建X数量目前网页的pageson两侧的。一旦它超出你的页面范围,它将重新创建它。

+0

谢谢我将测试它 – Jey10

+0

但是,如果确定viewpager,我怎么能为viewpager的每个片段设置一个特定的offscreenlimit? – Jey10

+0

我认为你的viewpager的每一页都创建一个片段实例。在这种情况下,设置页面限制可以控制片段初始化。 – Kunu