동일한 클래스의 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 0
및 INDEX 1
가 기록 얻을 그것을 보여줍니다 INDEX 2
및 은 마지막에 대해을 표시하지 않습니다. 그러나 제목 (나는 TabStrip
을 사용하고 있습니다)은 각 페이지마다 올바르게 설정되어 있습니다.
getItem()
메서드가 첫 번째 페이지에서 2 번 호출되었지만 마지막 페이지에서 전혀 호출되지 않는 이유는 무엇입니까?
UPDATE 나는 그것이 여러 Fragments
을 미리로드 호출되는 때부터이 getItem()
방법에 의존 할 수 알아 냈어. 그래서 질문은 이제 어떻게 ListView
을 설정하기 전에 단편의 위치를 안전하게 결정할 수 있습니까?
업데이트 2 내가 3 개 Fragment
클래스를 생성하고 인덱스에 기반을 인스턴스화 결국,하지만 어떻게 든이 못생긴 솔루션 느낌, 나는 더 우아한 하나 감사 할 것입니다.
잘 만들고, 나는 가능한 모든 로그인 한 후 같은 결론에 거의왔다. 그러나 질문은'onActivityCreated()'메소드에서'ListView'를 설정할 때 어떻게 정확한 내용을 보장 할 수 있을까요? 나는 유일한 방법이 3 가지 다른'Fragment' 클래스를 사용하고 있다고 생각하지 않는다. 방법은 있어야한다. – Droidman
@Droidman hm, 나는 실제로 당신의 문제와'index' 파라미터로'getItem' 메소드에 대한 염려를 이해할 수 없다. ViewPager의 자식 생성 방법은 매우 분명하고 직설적입니다. – eleven