2012-01-08 46 views
0

我使用ActionBarSherlock兼容性庫,並在操作欄的標籤之間進行分頁時遇到奇怪的行爲。每個選項卡都包含一個簡單的片段,沒有什麼特別的。我觀察到片段的onCreateView方法被稱爲太頻繁,即使沒有屏幕方向更改。它看起來像某種預緩存。我有三個選項卡,當創建活動時,onCreateView僅對前兩個片段被調用。直到我向前推進一步,最後一個片段才創建視圖。從最後一個選項卡分頁到第一個時,會發生同樣的情況。在操作欄中調用標籤時重新創建片段的視圖

有沒有人知道爲什麼會出現這種情況?當父活動完成創建時,我會假設一次創建所有視圖。我不想一次又一次地創建視圖,碎片沒有變化,它們是靜態的。它沒有任何意義,並導致分頁呆滯一點...

回答

2

幾個小時後,我發現那裏發生了什麼。 ViewPager有一個默認設置DEFAULT_OFFSCREEN_PAGES,它設置ViewPager視圖容器中存儲的最大視圖數量(在我的情況下爲片段)。顯然是某種資源優化;隱形視圖可以扔掉並在需要時進行恢復。

沒有什麼比這更容易,然後改變這個值由setOffscreenPageLimit(int limit) setter,我忽略了。

+0

Thanks.Your答案以不同的方式對我有幫助。我有一個自定義佈局,動態添加視圖。我有4個屏幕。當我滑動到第4個屏幕並返回到第一個時,我的自定義佈局無法正確顯示,我已經動態添加了視圖。雖然不是直接解決問題的解決方案,但它解決了問題.upvoted – rogerstone 2012-02-08 05:52:33

0

我認爲這是有意識地完成以增加用戶體驗。 與兼容性lib的ViewPager一樣。

無論如何,來源是可用的。