0

我在我的应用程序中使用操作栏和 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;
    }
}

在所有设置后的代码中,我有以下行:

CoachFragment fragment = (CoachFragment) mPagerAdapter.getItem(3);
    fragment.setProgress(dor);

我的片段不为空,但在 CoachFragment 的 setProgress() 中,我在其中一个对象中得到了空指针。但我在 CoachFragmwnt 的 oncreatview() 中实例化了该对象。当片段对象不为空但未调用 onCreateView() 时,这怎么可能?

4

1 回答 1

0

当片段对象不为空但未调用 onCreateView() 时,这怎么可能?

是的,它发生了。 Fragment.instantiate只是创建一个对象,但不调用它的回调方法,如onCreateView()

稍后将在适配器中调用回调方法。

我认为您可以将其fragment.setProgress(dor);移至:

  1. onResume()活动的。
  2. Fragment 的回调方法,如onCreateView().
于 2013-08-24T14:21:14.363 回答