2011-12-03 70 views
1

好的,問題與this post幾乎相同,但是那裏的解決方案並沒有解決我的問題。ViewPager PageAdapter not updating查看

我使用FragmentPagerAdapterList保持Fragment s如下所示。

public class ViewPageAdapter extends FragmentPagerAdapter { 
    private List<Fragment> fragments; 

    public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) { 
     super(fm); 
     this.fragments = fragments; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return fragments.get(position); 
    } 

    @Override 
    public int getCount() { 
     return fragments.size(); 
    } 

    ... 
} 

而我的Fragment覆蓋了onCreateView方法。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) { 
    return inflater.inflate(theLayoutResourceId, container, false); 
} 

如果使用this post方法(重寫int getItemPosition(Object object)返回POSITION_NONE),我會打電話notifyDataSetChanged()後得到 java.util.ConcurrentModificationException

方法調用流程就像這樣。

  1. ViewPager頁索引1,通過點擊一個Button(恰好在相同Facebook的Android的示例的LoginButton
  2. 對話框關閉後(onAuthSucceed),除去ViewPager頁索引打開Dialog 1和和添加另一頁是頁索引1
  3. 使用notifyDataSetChanged

我試過很多其他方法強制更新刪除Fragment前將Fragment添加到適配器,但該頁面不會更新到新內容。

我只是找到了一個方法,使頁面空白...

viewpager.removeViewAt(1); 
viewpagerAdapter.removeItem(1); 
viewpagerAdapter.addItem(1, new Fragment(...)); 

無論是解決問題的更新或java.util.ConcurrentModificationException將是巨大的。感謝您的幫助:)

+1

你好。你能找到解決這個問題的辦法嗎?我有完全相同的問題,但找不到任何工作解決方案:(請幫助,如果你有一些工作!謝謝:) –

+0

不,我沒有解決問題,無論是。 –

回答

2

這篇文章是有點老,但萬一有人遇到這種情況。我在類似的帖子here中找到了答案。它看起來像是在正確的軌道上,但您需要將您的FragmentPagerAdapter更改爲FragmentStatePagerAdapter並覆蓋getItemPosition(Object),正如您在文章中所建議的那樣。

祝你好運。

+0

謝謝。我試過了你的方法,它確實有效,但它有時候很奇怪。我認爲這是因爲我試圖刪除當前可見頁面,並且行爲取決於當前頁面的位置。我認爲可以通過在移除屏幕之前切換當前頁面來解決,但我沒有嘗試過。 –