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);