Android 使用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

我在应用程序中使用操作栏和viewpager实现选项卡。我想访问主机活动中某个选项卡的片段。这是我的pagerAdapter代码:

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);