뷰 뷰어로 구성된 응용 프로그램을 개발하고 있습니다. 뷰 페이저를 스 와이프하는 동안 올바르게로드 된 모든 조각이 있지만 여기에 문제가 있습니다. 다시 한 번 다시 같은 페이징을 사용하여보기 호출기를 스 와이프하면 다시로드됩니다.하지만 이전 요구 사항에 따라로드 된 조각이 복원되어야합니다. 다음 두 가지 코드로 시도했습니다.ViewPager가 스 와이프 중 이전 조각이 아닙니다
A)는 여기 내보기 호출기
어댑터에서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;
}
}
이 내가 사용한 코드입니다,하지만 내가 할 수있는 파편을 유지하지 마라.