2016-06-23 52 views
1

我在我的應用程序中實現了ViewPager中100的相同片段。片段相當大的來自服務器的顯示數據。當我把代碼mViewPager.setOffscreenPageLimit (100),應用程序感覺非常沉重。因此,我使用以下方法:刪除setOffscreenPageLimit並調用一種方法來檢查服務器上的數據,並在選擇片段時顯示它。但是當發生這種情況時:選擇片段「1」,然後片段「2」,回到片段「1」,片段「1」將重複該活動。我的問題是如何保持每個片段的活動被選中或當返回到最後一個條件選擇的片段?對不起我的英語不好。保持每個片段內部ViewPager?

回答

0

如果刪除setOffscreenPageLimit,保持每個片段的活性的方法是片段的狀態數據存儲在:

@Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putData("key", fragmentData); 
    } 

,當你離開它,當你回來,你更新由片段你存儲的狀態數據。

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
      fragmentData = savedInstanceState.getData("key", defaultData); 
    } 

你應該在viewpager中使用一些片段,不要使用太多。考慮使用片段並在其中顯示許多視圖,數據。

0

setOffscreenPageLimit:設置的,應該是 保留在視圖層次結構的當前頁面的兩側在 空閒狀態的頁數。需要時,將從 適配器重新創建超出此限制的頁面。

請勿將setOffscreenPageLimit設置得太大,因爲視圖尋呼機會使頁面保持活動狀態,所以您的應用程序將運行緩慢。並且,當您刪除setOffscreenPageLimit時,此設置默認爲1.這意味着超出此限制(1)的頁面將在需要時從適配器重新創建。 https://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)