Fragment刷新無效的解決方案

ViewPager+Fragment如今很是經常使用,可是有時候也會有些問題緩存

當你更新裏fragment List集合後調用fragmentpageadpater的notifyDataSetChanged方法時發現數據根本就沒有刷新this

他會先去FragmentManager裏面去查找有沒有相關的fragment若是有就直接使用若是沒有才會觸發fragmentpageadapter的getItem方法獲取一個fragment。因此你更新的fragmentList集合是沒有做用的,還要清除FragmentManager裏面緩存的fragment。解決辦法:在繼承的fragmentpageadapter類裏面添加這麼一個方法繼承

public void setFragments(List fragments) {
    if(this.fragments != null && fm != null){
        FragmentTransaction ft = fm.beginTransaction();
        for(Fragment f:this.fragments){
            ft.remove(f);
        }
        ft.commit();
        ft=null;
        fm.executePendingTransactions();
    }
    this.fragments = fragments;
    notifyDataSetChanged();
}

 

而後須要刷新的地方調用rem

adapter.setFragments(fragments);
相關文章
相關標籤/搜索