我有一個應用程序使用兩個包含片段的選項卡。我正在使用FragmentPagerAdapter來管理選項卡更改。所有工作正常與兩個選項卡。使用FragmentPagerAdapter恢復片段
我最近添加了第三個選項卡,我有點麻煩。 tab1(fragment1)是一個小片段的LinearLayout。 tab2(fragment2)是一個簡單的文本佈局。 tab3(fragment3)也是一個簡單的文本佈局。
如果我在tab1和tab2之間切換都可以正常工作並保持其狀態。但是,如果我在tab1和tab3之間切換,tab3正確顯示文本,但tab1顯示一個空白選項卡。
我知道,如果一個標籤離開當前位置超過1個位置,該片段將被銷燬,並且片段將需要被重新創建。 FragmentPagerAdapter
不會自動執行此操作嗎?
我發現,如果我旋轉設備(選擇tab1),tab1片段將恢復其正確的狀態,所以片段不被破壞。好像有一個問題,版面沒有被ViewPager
正確重新創建,但這只是一個猜測。
作爲解決方案,我設置了myViewPager.setOffscreenPageLimit(2)
,並保留了佈局。我想讓這個工作,因爲我認爲它應該不會迫使碎片留在記憶中。
我已經在tab1片段上設置了setRetainInstance(true),但我想我可能沒有將它設置在嵌入tab片段內的片段上。主要的片段確實在那裏,該選項卡的菜單項被正確創建,只是佈局不被渲染。我需要更深入地瞭解佈局檢查員。 –
我已經檢查過,並且在標籤片段及其嵌套子項上都設置了「setRetainInsance」。我有該選項卡的「添加」功能,如果我使用它,新的子片段不會被創建。這似乎是與正確恢復的子碎片有關的問題。需要做更多的挖掘 –