-1

我正在使用Android Studio 1.0.1。我创建了一个新的默认由此IDE提供的Navigation Drawer Activity。它创造了2个Java文件 -如何在默认导航抽屉活动中实现工具栏?

  • 延伸android.support.v7.app.AndroidBarActivity
  • NavigationDrawerFragment延伸Fragment

随着HomePage.java,它为我提供了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

    工具条工具栏=(栏)findViewById(R.id.toolbar); setSupportActionBar(栏);

但不幸的是,每当我启动HomePage活动我的应用程序强制关闭。有什么建议么? Logcat

activity_home_page.xml

HomePage.java

NavigationDrawerFragment.java

custom_toolbar.xml

+0

'custom_toolbar.xml'请。 – Simas 2015-02-10 17:32:21

+0

增加了'custom_toolbar.xml' – rockydgeekgod 2015-02-10 17:41:04

回答

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); 
} 
+0

这工作。谢谢! – rockydgeekgod 2015-02-10 18:18:41

相关问题