我正在使用Android Studio 1.0.1
。我创建了一个新的Navigation Drawer Activity
,默认情况下由此IDE提供。它创建了2个Java文件 -
HomePage.java
延伸android.support.v7.app.AndroidBarActivity
NavigationDrawerFragment
延伸Fragment
除此之外,它为我提供了3个布局文件 -
activity_home_page.xml
fragment_home_page.xml
fragment_navigation_drawer.xml
现在我想要做的是隐藏Action Bar,然后获取工具栏,因为我想做一些详细的设计。为此,我采取了以下步骤 -
在styles.xml
真正 假
在AndroidManifest.xml
中更改了应用程序的主题
android:theme="@style/AppTheme"
制作了toolbar
版面,并将其纳入activity_home_page.xml
向HomePage.java
工具栏工具栏=(工具栏)findViewById(R.id.toolbar); setSupportActionBar(栏);
但不幸的是,每当我启动HomePage
活动时,我的应用程序都会关闭。有什么建议?
Logcat
答案 0 :(得分:1)
问题:
在您的片段中,您有:
toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
...
toolbar.getContext()
但是,当您致电findViewById
时,该活动尚未调用setContentView
。这意味着工具栏尚未膨胀,toolbar
设置为null
。因此toolbar.getContext()
会抛出一个NPE。
<强>修正:强>
而不是toolbar.getContext()
只需调用getActivity()
即可获取上下文。
如果您的片段确实需要工具栏,则应在活动onCreate
之后调用它。一个好地方是onActivityCreated
:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
}