Android 如何在默认导航抽屉活动中实现工具栏?
我正在使用Android Studio 1.0.1。我创建了一个新的Android 如何在默认导航抽屉活动中实现工具栏?,android,android-actionbar,navigation-drawer,android-toolbar,Android,Android Actionbar,Navigation Drawer,Android Toolbar,我正在使用Android Studio 1.0.1。我创建了一个新的导航抽屉活动,默认情况下由该IDE提供。它创建了2个Java文件- HomePage.java扩展了android.support.v7.app.AndroidBarActivity 扩展片段的导航抽屉片段 除此之外,它还为我提供了3个布局文件- activity\u home\u page.xml fragment\u home\u page.xml fragment\u navigation\u drawer.xml
导航抽屉活动
,默认情况下由该IDE提供。它创建了2个Java文件-
扩展了HomePage.java
android.support.v7.app.AndroidBarActivity
- 扩展
片段的导航抽屉片段
activity\u home\u page.xml
fragment\u home\u page.xml
fragment\u navigation\u drawer.xml
- 在
真的 假的styles.xml
- 在
AndroidManifest.xml
android:theme=“@style/AppTheme”
- 创建了
布局,并将其包含在工具栏
活动主页.xml中
- 将工具栏对象添加到
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);设置支持操作栏(工具栏)HomePage.java
主页
活动时,我的应用程序强制关闭。有什么建议吗?
问题: 在你的片段中,你有:
toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
...
toolbar.getContext()
但是,当您调用findViewById
时,活动尚未调用setContentView
。这意味着工具栏尚未膨胀,并且toolbar
设置为null
。因此toolbar.getContext()
抛出一个NPE
修复:
只需调用getActivity()
,即可获得上下文,而不是toolbar.getContext()
如果您的片段确实需要工具栏,您应该在活动的
onCreate
之后调用它。一个很好的地方是创建一个活动:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
}
custom\u toolbar.xml
请。添加了custom\u toolbar.xml