6

我正在使用由模板创建的 NavigationDrawer(开始一个新项目时)。我正在尝试获得 Material Design 兼容性,所以我使用的是 AppCompat v7。我按照这些说明将工具栏设置为我的 ActionBar(即在我的工具栏上使用 setSupportActionBar),并且在我的 NavigationDrawerFragment 中(在 onCreateView 内)获得了 NPE

 mDrawerListView.setAdapter(new ArrayAdapter<String>(
            getActionBar().getThemedContext(),
            android.R.layout.simple_list_item_activated_1,
            android.R.id.text1, ...

现在我怀疑问题出在片段内的 getActionBar() 方法上:

   private ActionBar getActionBar() {
    return ((ActionBarActivity) getActivity()).getSupportActionBar();
}

但我不知道为什么 - 在 NavigationDrawerFragment 上调用 setUp() 之前,我在 Activity 的 onCreate 中调用了 setSupportActionBar(toolbar) ...

如果有人知道为什么会这样,请帮忙!

4

2 回答 2

6

似乎问题在于片段的 onCreateView 在活动的 onCreate 之前被调用,因此没有设置 ActionBar。我只是将有问题的代码移动到片段的 onActivityCreated 中,它就像一个魅力。

于 2014-11-03T07:07:33.023 回答
4

只需替换getActionBar().getThemedContext()getActivity()

于 2014-10-31T18:23:04.737 回答