2013-10-12 33 views
33

我在寫一個使用FragmentPagerAdapter的應用程序。適配器中的片段需要根據外部數據進行更新 - 但這不會發生。我注意到,該片段類僅實例化一次,在爲getItem功能:即使我刪除類,並使用一個新的何時調用FragmentPagerAdapter的getItem?

@Override 
public Fragment getItem(int position) { 
    TabInfo info = mTabs.get(position); 
    return Fragment.instantiate(mContext, info.clss.getName(), 
       info.args); 
} 

,沒有什麼幫助 - 此方法只調用一次,第一次的選項卡已填充,然後再也不會。任何人有一個想法爲什麼?

謝謝!

回答

46

每當適配器需要一個片段與片段不存在的getItem將被調用。

如果片段在FragmentManager已經存在,那麼就沒有必要實例並的getItem並不需要被調用。

要更新現有的片段,你會需要從FragmentManager或適配器檢索,並相應地操縱它。

默認情況下,viewpager將爲可見頁面和它旁邊的一個創造片段。即當你刷卡開始,在位置1和2片段2頁,在第3位的片段將被創建等

+0

是有可能毀掉一個片段? –

+2

http://stackoverflow.com/questions/10396321/remove-fragment-page-from-viewpager-in-android – Kuffs

+0

http://stackoverflow.com/questions/15212309/cannot-remove-fragment-from-viewpager-why – Kuffs

14

比上面的回答更具體的(這是正確的!)的getItem被稱爲通過FragmentPagerAdapter的instantiateItem(ViewGroup容器,int位置)方法。以防萬一幫助:)

3

使用簡單FragmentStatePagerAdapter代替FragmentPagerAdapter

+2

爲什麼?說明............. –

相關問題