Я использую android.support.v4.view.ViewPager и заметил, что после установки моего android.support.v4.app.FragmentStatePagerAdapter на ViewPager в методе onStart() моей активности я не могу получить представление о отображаемая в данный момент страница ViewPager, потому что она, похоже, еще не инициализирована/прикреплена/нарисована к действию. Я всегда получаю NPE.
Есть ли событие, которое запускается, когда мой ViewPager полностью инициализирован, включая его страницы фрагментов и их представления?
Мой код в методе onStart() основного действия выглядит примерно так:
ViewPager vp = findViewById(R.id.viewPager);
vp.setAdapter(new FlashCardPagerAdapter(getSupportFragmentManager()));
vp.getChildCount(); //this is still 0 because the child fragments have not been added yet, why? When are they added?
Мой адаптер выглядит так:
public class FlashCardPagerAdapter extends FragmentStatePagerAdapter {
private List<FlashCard> flashCards;
private FlashCardFragment[] flashCardFragments;
public FlashCardPagerAdapter(FragmentManager fm) {
super(fm);
flashCards = FlashCardApp.getInstance().getFlashCards();
flashCardFragments = new FlashCardFragment[flashCards.size()];
}
@Override
public Fragment getItem(int i) {
if (flashCardFragments[i] != null) {
return flashCardFragments[i];
} else {
flashCardFragments[i] = new FlashCardFragment(flashCards.get(i));
return flashCardFragments[i];
}
}
public FlashCardView getFlashCardViewAt(int i) {
return ((FlashCardFragment) getItem(i)).getFlashCardView();
}
@Override
public int getCount() {
return 25;
}
}
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ Дело в том, что все это работает, когда я вызываю его после метода onStart(), например, в одном из моих пользовательских представлений кнопок.