viewpager2与FragmentStateAdapter取消fragment缓存
时间: 2024-01-02 10:04:41 浏览: 232
viewPager2与FragmentStateAdapter配合使用
5星 · 资源好评率100%
默认情况下,ViewPager2中使用的FragmentStateAdapter会对Fragment进行缓存,以提高性能和流畅度。但是,有时候我们可能需要取消这种缓存,例如在Fragment中有网络请求等需要每次都重新加载的情况下。
取消Fragment缓存的方法很简单,只需要在FragmentStateAdapter的子类中覆盖getItemId()方法并返回一个唯一的ID即可。例如:
```java
public class MyFragmentStateAdapter extends FragmentStateAdapter {
public MyFragmentStateAdapter(FragmentManager fragmentManager, Lifecycle lifecycle) {
super(fragmentManager, lifecycle);
}
@NonNull
@Override
public Fragment createFragment(int position) {
// 创建Fragment
}
@Override
public long getItemId(int position) {
// 返回唯一的ID,取消缓存
return super.getItemId(position) + position;
}
}
```
在上面代码中,我们通过覆盖getItemId()方法并加上当前位置的值来保证每个Fragment都有一个唯一的ID,从而取消了缓存。
阅读全文