解决ViewPager FragmentPagerAdapter不刷新问题

ViewPager+FragmentPagerAdapter使用时发现notifyDataSetChanged()方法不起作用,查看FragmentPagerAdapter源码发现中

FragmentPagerAdapter中的Fragment是从FragmentManager中根据tag取的。如果FragmentManager中有相应的Fragment就会复用。也就导致了ViewPager不刷新的问题

 

解决ViewPager FragmentPagerAdapter不刷新问题_第1张图片

 

解决方案:在刷新之前将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();
}

你可能感兴趣的:(Android,ViewPager,不刷新)