6

我有3個片段由FragmentPagerAdapter管理,設置爲viewPager。Android:使用viewPager加載限制片段

我想逐個加載片段,但是當執行FragmentActivity的onCreate方法時,會執行2個第一個片段(onCreateView方法)。

我試圖限制使用setOffscreenPageLimit方法加載碎片,但沒有任何更改。

mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments); 
pager = (ViewPager) super.findViewById(R.id.tabviewpager); 
pager.setOffscreenPageLimit(0); 
pager.setAdapter(this.mPagerAdapter); 

謝謝你的幫助。

回答

8

最低爲OffscreenPageLimit設置爲1ViewPagersource code

private static final int DEFAULT_OFFSCREEN_PAGES = 1; 
.... 
public void setOffscreenPageLimit(int limit) { 
    if (limit < DEFAULT_OFFSCREEN_PAGES) { 
     Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " + 
       DEFAULT_OFFSCREEN_PAGES); 
     limit = DEFAULT_OFFSCREEN_PAGES; 
    } 
    if (limit != mOffscreenPageLimit) { 
     mOffscreenPageLimit = limit; 
     populate(); 
    } 
} 
+0

謝謝。有沒有另一種方式來實現,而不使用setOffscreenPageLimit? – johann

+2

碎片是否真的需要逐個加載?如果是這樣,你可能想用''ViewPager'和'Adapter'來代替。如果你真的想要一個'ViewPager',你可以在ViewPager上使用[OnPageChangeListener](http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html),然後等待'片段'是可見的做任何你需要的。你只需要在'onCreateView'中做一些基本的初始化工作,然後在'Fragment'變爲可見狀態時進行大量的工作。 – antew

+0

謝謝你寶貴的幫助!我將嘗試使用OnPageChangeListener。 – johann