最近有个需求是做FragmentPagerAdapter+Tablayout+数据库。每次a界面添加东西到b界面,就更新b界面的RecycleView。
Fragement是默认会提前加载好界面(因为我只有2个界面)所以全部默认加载好了。

setOnPageListenner已经被谷歌取消了,新加入了一个addOnPageChangeListener,在这里设置好监听就能完成更新以后加载。
错误方法1:
根本没用
mFragmentsAdapter.notifyDataSetChanged();
错误方法2:(也是网上很流行的,在stackoverflow里面也是这样写的)
返回POSITION_NODE并且更改destroy,方法有的时候有用有的时候没用,进行刷新的时候会出现卡顿,白屏。
@Override public int getItemPosition(Object object) {return POSITION_NONE; } @Override public void destroyItem(ViewGroup container,int position,Object object){ super.destroyItem(container, position, object); FragmentTransaction bt = fm.beginTransaction(); bt.remove((Fragment)object); bt.commit(); }

正确的解决方法应该是
添加一个setFragments方法和设置POSITION_NODE
public void setFragments(List<Fragment> fragments) { if (this.fragmentList != null) { FragmentTransaction ft = fm.beginTransaction(); for (Fragment f : this.fragmentList) { ft.remove(f); } ft.commit(); ft = null; fm.executePendingTransactions(); } this.fragmentList = fragments; notifyDataSetChanged(); }

浙公网安备 33010602011771号