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