[英]Don't save fragment state in ViewPager2
我将ViewPager2
与FragmentStateAdapter
一起使用,如果我有三个片段,则默认行为是保存片段 state,实际上我有一个片段,但创建实例并将不同的类型传递给它,所以如果我有片段 A、A1 和 A2 并且我从a1 到 a 然后返回到 a 适配器不会重新创建 A 而是使用 A 的旧实例,这就是发生在我身上的事情
但是相反,我不希望这种行为我希望适配器创建片段 A 的新实例而不是使用最后一个实例,然后如果我滚动到 B 创建一个 B 的新实例并且不使用最后一个实例。
public class JobsViewPagerAdapter extends FragmentStateAdapter {
private List<Integer> fragmentsType = new ArrayList<Integer>(){{
add(JobsType.Booked.numValue);
add(JobsType.INVITED.numValue);
add(JobsType.PAST.numValue);
}};
public JobsViewPagerAdapter(@NonNull FragmentActivity fragmentActivity) {
super(fragmentActivity);
}
@NonNull
@Override
public Fragment createFragment(int position) {
return JobsInnerFragment.newInstance(fragmentsType.get(position));
}
@Override
public int getItemCount() {
return fragmentsType.size();
}
public enum JobsType {
Booked(0), TODAY(1), INVITED(2), UPCOMING(3), PAST(4);
private int numValue;
JobsType(int value) {
this.numValue = value;
}
public int getNumValue() {
return numValue;
}
}
}
public static JobsInnerFragment newInstance(int jobsType){
JobsInnerFragment jobFragment = new JobsInnerFragment();
Bundle todayJobsBundle = new Bundle();
todayJobsBundle.putInt(Constants.JOBS_TYPE, jobsType);
jobFragment.setArguments(todayJobsBundle);
return jobFragment;
}
尝试将offscreenPageLimit
设置为ViewPager
为 1
viewPager2.offscreenPageLimit=1
从文档
设置应保留到当前可见页面任一侧的页面数。 超出此限制的页面将在需要时从适配器重新创建
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.