【发布时间】:2020-08-15 02:26:54
【问题描述】:
我正在使用ViewPager2 和FragmentStateAdapter,如果我有三个片段,默认行为是保存片段状态,实际上我有一个片段但创建实例并将不同的类型传递给它,所以如果我有片段 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;
}
【问题讨论】:
标签: java android android-viewpager2