Я разрабатываю приложение, состоящее из пейджера просмотра, пока я пролистываю пейджер просмотра, все фрагменты загружаются правильно, но вот моя проблема. Когда я снова прокручиваю пейджер просмотра с теми же фрагментами, он снова загружается, но в соответствии с моим требованием предыдущие загруженные фрагменты должны быть восстановлены. Я пробовал использовать следующий код двумя способами.
А) Вот мой просмотр пейджера
mViewPager = (ViewPager)mMyPageFragment.findViewById(R.id.Viewpager);
myAdapter = new MyAdapter(getFragmentManager());
mViewPager.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
В адаптере
public class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 3;
}
@Override
public Fragment getItem(int position) {
System.out.println("MyAdapter="+position);
switch (position) {
case 0:
return new MyPageFirstFragment1();
case 1:
return new MyPageFirstFragment2();
case 2:
return new MyPageFirstFragment3();
default:
return null;
}
}
}
Второй способ
private static Hashtable<Integer, Fragment> fragmentItems = new Hashtable<Integer, Fragment>();
@Override
public Fragment getItem(int position) {
System.out.println("MyAdapter=" + position);
switch (position) {
case 0: {
if (!fragmentItems.containsKey(position)) {
fragmentItems.put(position, new MyPageFirstFragment1());
}
return fragmentItems.get(position);
}
case 1: {
if (!fragmentItems.containsKey(position)) {
fragmentItems.put(position, new MyPageFirstFragment2());
}
return fragmentItems.get(position);
}
case 2: {
if (!fragmentItems.containsKey(position)) {
fragmentItems.put(position, new MyPageFirstFragment3());
}
return fragmentItems.get(position);
}
case 3: {
if (!fragmentItems.containsKey(position)) {
fragmentItems.put(position, new MyPageFirstFragment4());
}
return fragmentItems.get(position);
}
default:
return null;
}
}
Это код, который я использовал, но я не могу сохранить фрагменты.