您的位置:首页 > 移动开发 > Android开发

android FragmentPagerAdapter 无法刷新数据的解决方法

2016-07-25 14:47 671 查看
class FrgAdapter extends FragmentPagerAdapter {
FragmentManager fm;

public FrgAdapter(FragmentManager fm) {
super(fm);
this.fm = fm;
}

/**
* 返回的Fragment相当于ViewPager中的一个item
*/
@Override
public Fragment getItem(int pos) {
return fragmentList.get(pos);
}

@Override
public int getCount() {
return fragmentList.size();
}

@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}

@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
//核心方法
@Override
public Object instantiateItem(ViewGroup container, int position) {

if (flag_updateFm) {//根据需求添加更新标示,UI更新完成后改回false,看不懂的回家种田
//得到缓存的fragment
Fragment fragment = (Fragment) super.instantiateItem(container, position);
//得到tag,这点很重要
String fragmentTag = fragment.getTag(); //这里的tag是系统自己生产的,我们直接取就可以
//如果这个fragment需要更新
FragmentTransaction ft = fm.beginTransaction();
//移除旧的fragment
ft.remove(fragment);
//换成新的fragment
fragment = fragmentList.get(position);
//添加新fragment时必须用前面获得的tag,这点很重要
ft.add(container.getId(), fragment, fragmentTag);
ft.attach(fragment);
ft.commit();

return fragment;
} else {
return super.instantiateItem(container, position);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: