ViewPager+Fragment现在非常常用,但是有时候也会有些问题
当你更新里fragment List集合后调用fragmentpageadpater的notifyDataSetChanged方法时发现数据根本就没有刷新
他会先去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();
}
然后需要刷新的地方调用
adapter.setFragments(fragments);
本文详细介绍了当使用ViewPager+Fragment组合时遇到的数据刷新问题及其解决方案。文章指出,在更新fragmentList并调用notifyDataSetChanged后,数据可能不会如预期般刷新。这是因为FragmentManager会缓存Fragment实例。为了解决这个问题,作者提供了一段代码,通过移除FragmentManager中已有的Fragment实例来确保数据能正确刷新。


8917

被折叠的 条评论
为什么被折叠?



