解决ViewPager FragmentPagerAdapter不刷新问题

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

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

 

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

猜你喜欢

转载自blog.csdn.net/gjd1988/article/details/83895544