2016-09-10 2 views
1

ViewActivity 및 TabLayout이있는 MainActivity라는 Activity가 있습니다. ViewPager에는 거기에 바인딩 된 4 개의 조각이 있습니다. 내가FragmentStatePagerAdapter가 잘못된 위치를 반환하지만 오른쪽 단편

내가 내 코드 실행

public class MainPagerAdapter extends FragmentStatePagerAdapter { 

    Fragment[] fragments; 

    public MainPagerAdapter(FragmentManager fm) { 
     super(fm); 
     fragments = new Fragment[]{ 
       new FragProfile(), 
       new FragScore(), 
       new FragMoney(), 
       new FragOther() 
     }; 
    } 

    @Override 
    public Fragment getItem(int p) { 
     Log.w("Fragment", String.valueOf(p)); 

     switch (p){ 
      case 0: 
       return fragments[0]; 
      case 1: 
       return fragments[1]; 
      case 2: 
       return fragments[2]; 
      case 3: 
       return fragments[3]; 
      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     return 4; 
    } 
} 

첫 번째 탭에있는 (아마도) FragmentStatePagerAdapter에 대한 문제가, 난이 로그는 두 번째

09-10 20:11:03.970 17034-17034/ampersanda.elsys W/Fragment: 2 

09-10 20:05:29.683 17034-17034/ampersanda.elsys W/Fragment: 0 
09-10 20:05:29.684 17034-17034/ampersanda.elsys W/Fragment: 1 

나온 있어요 세 번째에

하지만, 네 번째에 92,143,667,573,511,256,610,783,210은 내가 아무것도 기록되지있어, 나는 다시 세 번째로 내가 두 번째

09-10 20:14:50.241 17034-17034/ampersanda.elsys W/Fragment: 0 

위로이

09-10 20:14:07.373 17034-17034/ampersanda.elsys W/Fragment: 1 

있고 난 뒤 처음으로, 나는 아무것도 다시 기록되지 얻었다

내 코드가 잘 실행되지 않지만 코드 내의 switch()와 같은 Fragment 쇼가 있습니다.

답변

1

FragmentStatePagerAdapter을 사용할 때 페이지가 파괴 될 수 있으므로 GetItem()에서 페이지를 다시 만들어야하므로 FragmentPagerAdapter를 사용해야합니다.

이 버전의 호출기는 많은 수의 페이지가있을 때 더 유용하며 목록보기처럼 작동합니다. 페이지가 사용자에게 보이지 않을 때, 전체 조각이 파괴 될 수 있으며, 그 조각의 저장된 상태 만 유지됩니다.

관련 문제