天天看點

解決ViewPager FragmentPagerAdapter不重新整理問題

ViewPager+FragmentPagerAdapter使用時發現notifyDataSetChanged()方法不起作用,檢視FragmentPagerAdapter源碼發現中

FragmentPagerAdapter中的Fragment是從FragmentManager中根據tag取的。如果FragmentManager中有相應的Fragment就會複用。也就導緻了ViewPager不重新整理的問題

解決ViewPager FragmentPagerAdapter不重新整理問題

解決方案:在重新整理之前将FragmentManager中的Fragment清除一下

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