tabLayout+viewpager+fragment,在移除fragment并刷新FragmentPagerAdapter 界面还显示有fragment的布局
时间: 2024-01-12 18:03:42 浏览: 88
在移除fragment并刷新FragmentPagerAdapter后,仍然显示有fragment的布局,可能是因为FragmentPagerAdapter的缓存机制导致的。默认情况下,FragmentPagerAdapter会将已经创建的fragment保存在缓存中,并在需要显示时直接从缓存中取出,而不是重新创建。这样可以提高性能,但也可能导致一些意外的问题。
解决这个问题的方法是,重写FragmentPagerAdapter的getItemPosition()方法,让它返回POSITION_NONE。这样在调用notifyDataSetChanged()方法时,会销毁所有缓存的fragment,重新创建并显示最新的fragment。
具体的实现步骤如下:
1. 在FragmentPagerAdapter中重写getItemPosition()方法,让它返回POSITION_NONE:
```
public class MyPagerAdapter extends FragmentPagerAdapter {
...
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
...
}
```
2. 在需要刷新的地方调用notifyDataSetChanged()方法:
```
mAdapter.notifyDataSetChanged();
```
这样就可以解决移除Fragment并刷新FragmentPagerAdapter后,仍然显示有fragment的布局的问题了。
阅读全文