viewpager2与FragmentStateAdapter每次切换创建新的fragmeng
时间: 2024-01-22 20:02:31 浏览: 160
ViewPager2与FragmentStateAdapter每次切换都会重新创建Fragment的原因可能是因为你没有正确使用FragmentStateAdapter的方法。在使用FragmentStateAdapter时,需要重写getItemCount()方法和createFragment()方法。
getItemCount()方法决定了ViewPager2中有多少个Fragment,createFragment()方法则是用于创建新的Fragment,而不是每次都重新创建。
以下是一个示例代码:
```
public class MyFragmentStateAdapter extends FragmentStateAdapter {
private List<Fragment> mFragments;
public MyFragmentStateAdapter(FragmentManager fragmentManager, List<Fragment> fragments) {
super(fragmentManager, getLifecycle());
mFragments = fragments;
}
@Override
public int getItemCount() {
return mFragments.size();
}
@Override
public Fragment createFragment(int position) {
return mFragments.get(position);
}
}
```
在这个示例中,getItemCount()方法返回了Fragment的数量,而createFragment()方法则返回了指定位置上的Fragment对象。这样,每次切换时,只会重新创建当前可见的Fragment,而不是所有的Fragment。
希望这个答案能够帮助到你。
阅读全文