我正在使用 android.support.v4.view.ViewPager 并注意到,在我的活动的 onStart() 方法中的 ViewPager 上设置我的 android.support.v4.app.FragmentStatePagerAdapter 后,我无法检索当前显示的 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() 方法之后调用它时,所有这些都有效,例如在我的一个自定义按钮视图中。