Android 使用pageradapter获取空指针
我在应用程序中使用操作栏和viewpager实现选项卡。我想访问主机活动中某个选项卡的片段。这是我的pagerAdapter代码:Android 使用pageradapter获取空指针,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我在应用程序中使用操作栏和viewpager实现选项卡。我想访问主机活动中某个选项卡的片段。这是我的pagerAdapter代码: public class MyPagerAdapter extends FragmentPagerAdapter { Fragment screens[]; public MyPagerAdapter(FragmentManager fm, MainActivity2 context) { super(fm); sc
public class MyPagerAdapter extends FragmentPagerAdapter {
Fragment screens[];
public MyPagerAdapter(FragmentManager fm, MainActivity2 context) {
super(fm);
screens = new Fragment[4];
screens[3] = Fragment.instantiate(context,CoachFragment.class.getName() );
screens[2] = Fragment.instantiate(context,LogingFragment.class.getName() );
screens[1] = Fragment.instantiate(context,ToolbarFragment.class.getName() );
screens[0] = Fragment.instantiate(context,HistoryFragment.class.getName() );
}
@Override
public Fragment getItem(int index) {
if(index <= screens.length)
{
return screens[index];
}
return null;
}
@Override
public int getCount() {
return screens.length;
}
}
我的片段不是null,但在CoachFragment中的setProgress()中,我在其中一个对象中获得了null指针。但我在CoachFragmpWnt的oncreatview()中实例化了该对象。当片段对象不为null但未调用onCreateView()时,这是如何实现的
当片段对象不为null但未调用onCreateView()时,这是如何实现的
是的,它发生了。
Fragment.instantiate
只创建一个对象,而不调用它的回调方法,如onCreateView()
稍后将在适配器中调用回调方法
我认为您可以移动片段.setProgress(dor)代码>至:
活动的onResume()
片段的回调方法,如onCreateView()
这取决于您何时调用该代码。您已经创建了一个片段,但在事务将其附加到活动之前,该片段不会完全初始化。是的,您是对的。我的错误是,我应该将actionbar选项卡设置为items 3一次,以创建其片段。
CoachFragment fragment = (CoachFragment) mPagerAdapter.getItem(3);
fragment.setProgress(dor);