使用viewpager的时候,FragmentPagerAdapter的instantiateItem函数的实现默认是重用之前使用过的fragment。应用进程还在,当activity被回收重建的时候,viewpager使用的fragment依旧是之前的,但是代码里面没有去找回fragment的引用,直接new出来,导致tab点击refresh的fragment和实际上viewpager用的fragment不一致。
image
修复方案:重写getItemId方法,防止通过getItemId获得的id拿到旧的fragment。
@Override
public long getItemId(int position) {
return mFragments[position].hashCode();
}
网友评论