使用pageradapter获取空指针

时间:2013-08-24 14:00:04

标签: android android-fragments android-viewpager

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

我的片段不是null但是在CoachFragment的setProgress()中我在其中一个对象中得到了nullpointer。但我在CoachFragmwnt的oncreatview()中实例化该对象。当片段对象不为null但未调用onCreateView()时,如何实现这一点?

1 个答案:

答案 0 :(得分:0)

  

当片段对象不为null但未调用onCreateView()时,这是如何实现的?

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

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

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

  1. 活动的onResume()
  2. Fragment的回调方法,如onCreateView()