fragment - getView()方法返回NULL

时间:2014-11-19 19:02:17

标签: android android-fragments getview

当我调用getView时,我不知道为什么在我的片段中它返回NULL。

我知道调用getView 只需 执行 onCreateView方法 我调试了我的应用程序:我检查了第一个被称为onCreateView方法 所以我不知道问题出在哪里。

我告诉你我的代码:
这是我的主要活动,当用户点击抽屉菜单时,我会检查菜单的哪个语音被按下:

public void onNavigationDrawerItemSelected(int position) {
     ...    
     if (position == 7) {
                CreaVotoFragment fragment = CreaVotoFragment.newInstance(position + 1);
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.container, fragment)
                        .commit();
                //Mostra un Dialog che consente l'eliminazione di un corso
                fragment.createMark(this);
     }
     ...
 }

在这种情况下,用户按下语音菜单编号7,因此在此块中我创建了一个新的 片段,用静态方法newIstance。

这是方法:

public static CreaVotoFragment newInstance(int sectionNumber) {
    CreaVotoFragment fragment = new CreaVotoFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_SECTION_NUMBER, sectionNumber);
    fragment.setArguments(args);
    return fragment;
}

之后我只是将片段赋予方法:replace。

它工作,我也可以看到他在CreaVotoFragment类中调用onCreateView方法覆盖。

当我使用createMark方法(if块的最后一行)调用时问题开始。
在createMark方法内部,当我调用getView时,返回给我一个空指针。

1 个答案:

答案 0 :(得分:2)

您应该注意到commit()将在Handler.post()上运行。这意味着您的片段视图将在onNavigationDrawerItemSelected之后创建。

如果从内部片段调用与视图相关的方法来约束视图的生命周期,那就更好了。