如何在默认导航抽屉Activity中实现工具栏?
How to implement the Toolbar in the default Navigation Drawer Activity?
我正在使用 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
现在我想做的是隐藏操作栏,取而代之的是获得工具栏,因为我想做一些详细的设计。为此,我采取了以下步骤 -
在 styles.xml
中创建了新样式
真的
错误的
更改了 AndroidManifest.xml
中的应用程序主题
android:theme="@style/AppTheme"
创建了一个 toolbar
布局并将其包含在 activity_home_page.xml
中
向 HomePage.java
添加了一个工具栏对象
工具栏 toolbar = (工具栏)findViewById(R.id.toolbar); setSupportActionBar(工具栏);
但不幸的是,每当我启动 HomePage
activity 时,我的应用程序都会强制关闭。有什么建议么?
Logcat
问题:
在你的片段中你有:
toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
...
toolbar.getContext()
然而,当您调用 findViewById
时,activity 尚未调用 setContentView
。这意味着工具栏尚未膨胀并且 toolbar
设置为 null
。因此 toolbar.getContext()
抛出 NPE。
修复:
而不是 toolbar.getContext()
只需调用 getActivity()
即可获取上下文。
如果您的片段确实需要工具栏,您应该在 activity 的 onCreate
之后调用它。一个好的地方是 onActivityCreated
:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
}
我正在使用 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
现在我想做的是隐藏操作栏,取而代之的是获得工具栏,因为我想做一些详细的设计。为此,我采取了以下步骤 -
在
中创建了新样式styles.xml
真的 错误的
更改了
AndroidManifest.xml
中的应用程序主题android:theme="@style/AppTheme"
创建了一个
中toolbar
布局并将其包含在activity_home_page.xml
向
添加了一个工具栏对象HomePage.java
工具栏 toolbar = (工具栏)findViewById(R.id.toolbar); setSupportActionBar(工具栏);
但不幸的是,每当我启动 HomePage
activity 时,我的应用程序都会强制关闭。有什么建议么?
Logcat
问题:
在你的片段中你有:
toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
...
toolbar.getContext()
然而,当您调用 findViewById
时,activity 尚未调用 setContentView
。这意味着工具栏尚未膨胀并且 toolbar
设置为 null
。因此 toolbar.getContext()
抛出 NPE。
修复:
而不是 toolbar.getContext()
只需调用 getActivity()
即可获取上下文。
如果您的片段确实需要工具栏,您应该在 activity 的 onCreate
之后调用它。一个好的地方是 onActivityCreated
:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
}