簡體   English   中英

使用FragmentPagerAdapter還原片段

[英]Restoring a fragment using FragmentPagerAdapter

我有一個使用兩個選項卡的應用程序,兩個選項卡均包含片段。 我正在使用FragmentPagerAdapter來管理選項卡更改。 兩個標簽都可以正常工作。

我最近添加了第三個標簽,遇到了一些麻煩。 tab1(fragment1)是小片段的LinearLayout。 tab2(fragment2)是文本的簡單布局。 tab3(fragment3)也是文本的簡單布局。

如果我在tab1和tab2之間切換,則它們都可以正常工作並保持其狀態。 但是,如果我在tab1和tab3之間切換,則tab3正確顯示文本,而tab1顯示空白標簽。

我知道,如果一個選項卡比當前位置偏離1個以上的位置,則該片段將被銷毀,並且需要重新創建該片段。 FragmentPagerAdapter不會自動執行此操作嗎?

我發現如果旋轉設備(選擇了tab1),則tab1片段將以其正確狀態恢復,因此該片段不會被破壞。 看來ViewPager無法正確重新創建布局存在問題,但這只是一個猜測。

作為解決方法,我設置了myViewPager.setOffscreenPageLimit(2)並保留了布局。 我想讓它按我認為的那樣工作,而不會強迫片段保留在內存中。

setRetainInstance(true);

在片段的onCreateView方法中

閱讀setOffScreenPageLimit()的文檔,使我認為您的方法很好。 看這個:

如果您只有很少的頁面(3-4)可以一次全部保持活動狀態,則隨着用戶來回翻頁,新創建的視圖子樹的布局將花費更少的時間。

您應將此限制保持在較低水平,尤其是在頁面布局復雜的情況下。

我很好奇setRetainInstance(true)是否可以工作,因為是由適配器決定重新創建片段,而不是在某些Android更改配置操作中重新創建片段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM