我有带有一些片段的 viewpager,我根据应该编辑片段的 UI 为每个片段设置我的模型类。在我将该片段添加到 FragmentStatePagerAdapter 之前,我在构造函数中设置为片段的那个模型类。我的问题是,在旋转屏幕后或当系统杀死我的应用程序并恢复它时,我的片段被系统重新创建并且我的模型类实例丢失了。即使我设置了新的 FragmentStatePagerAdapter,系统创建的片段也是可见的。是否有任何正确的方法可以实现我创建片段的新实例并将它们放入 viewpager 中?我尝试了很多想法,例如从 FragmentManager 中删除片段,再次将适配器添加到 viewpager,仅将 FragmentStatePagerAdapter 更改为 FragmentPagerAdapter,但没有任何帮助。
我的活动类在加载器中从某些资源加载模型类:
List<Fragment> visibleFragment = new ArrayList<Fragment>();
for (Screen screen : wizard.screens) {
if (screen.visible) {
visibleFragment.add(new ScreenUI(screen));
}
}
viewPager.setAdapter(null);
viewPager.setAdapter(new WizardPagerAdapter(getSupportFragmentManager(), visibleFragment));
我的 FragmentStatePagerAdapter
public class WizardPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments;
private final int count;
public WizardPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
mFragments = fragments;
count = mFragments.size();
}
@Override
public Fragment getItem(int index) {
return mFragments.get(index);
}
@Override
public int getCount() {
return count;
}
}