2014-07-19 3 views
0

동일한 클래스의 3 ListFragments을 표시하기 위해 ViewPager을 사용하고 있지만 Fragment의 색인에 따라 각각 Fragment의 내용이 ListView이어야합니다.ViewPager의 단편 - 잘못된 색인입니까?

ListFragment :

public static NavigationListFragment newInstance(int index) { 
    NavigationListFragment listFrag = new NavigationListFragment(); 
    Bundle bundle = new Bundle(); 
    bundle.putInt("num", index); 
    listFrag.setArguments(bundle); 
    Log.d("INDEX", index+""); 
    return listFrag; 
} 

FragmentPagerAdapter :

@Override 
public Fragment getItem(int index) { 
    return NavigationListFragment.newInstance(index); 
} 

    @Override 
public int getCount() { 
    return TITLES.length; 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return TITLES[position]; 
} 

이 문제는 : 나는 호출기 내부의 두번째 항목에 슬쩍 때 시작 나는 즉시 INDEX 0INDEX 1가 기록 얻을 그것을 보여줍니다 INDEX 2은 마지막에 대해을 표시하지 않습니다. 그러나 제목 (나는 TabStrip을 사용하고 있습니다)은 각 페이지마다 올바르게 설정되어 있습니다.

getItem() 메서드가 첫 번째 페이지에서 2 번 호출되었지만 마지막 페이지에서 전혀 호출되지 않는 이유는 무엇입니까?

UPDATE 나는 그것이 여러 Fragments을 미리로드 호출되는 때부터이 getItem() 방법에 의존 할 수 알아 냈어. 그래서 질문은 이제 어떻게 ListView을 설정하기 전에 단편의 위치를 ​​안전하게 결정할 수 있습니까?

업데이트 2 내가 3 개 Fragment 클래스를 생성하고 인덱스에 기반을 인스턴스화 결국,하지만 어떻게 든이 못생긴 솔루션 느낌, 나는 더 우아한 하나 감사 할 것입니다.

답변

1

ViewPager은 스 와이프 애니메이션 목적으로 가장 가까운 항목을 만듭니다. 따라서 처음으로 액티비티가 ViewPager에 부착 된 사용자는 첫 번째 조각을보고 두 번째 조각으로 스 와이프 할 수 있습니다. 사용자가 ViewPager을 스 와이프하면 세 번째가 만들어지며 사용자가 다시 스 와이프 할 수 있습니다. 사용자

  • 와이프 시작 First 프래그먼트 볼 - - 사용자가 제 1 및 제 2
  • 와이프 단부 사이의 전이 볼 -

    1. 첨부 ViewPager
    2. ViewPager의 제 1 및 제 2 항목 생성 참조 사용자 번째 단편
    3. ViewPager 세 번째 항목을 만듭니다.
    4. 스 와이프 시작 - 두 번째와 세 번째 사이의 전환 참조
    5. 슬쩍 최종 - 사용자가
    6. ViewPager이 첫번째 조각을 파괴 세번째 조각을보고 말이 네 번째
  • +0

    잘 만들고, 나는 가능한 모든 로그인 한 후 같은 결론에 거의왔다. 그러나 질문은'onActivityCreated()'메소드에서'ListView'를 설정할 때 어떻게 정확한 내용을 보장 할 수 있을까요? 나는 유일한 방법이 3 가지 다른'Fragment' 클래스를 사용하고 있다고 생각하지 않는다. 방법은 있어야한다. – Droidman

    +0

    @Droidman hm, 나는 실제로 당신의 문제와'index' 파라미터로'getItem' 메소드에 대한 염려를 이해할 수 없다. ViewPager의 자식 생성 방법은 매우 분명하고 직설적입니다. – eleven

    관련 문제