【发布时间】:2015-01-31 10:20:09
【问题描述】:
我试图让我的操作栏在导航抽屉的两种状态(打开和关闭)时显示一个图标而不显示任何标题
我阅读了developers android 上的文档,了解如何在抽屉可见时修改操作栏的内容。正如页面所说,我创建了ActionBarDrawerToggle 的实例并将图标和标题设置为空。但是我仍然看不到任何图标,并且只要我拉出导航抽屉,就会出现应用程序标题。以下是我在活动onCreate中使用的代码
mToggle = new ActionBarDrawerToggle(
this,
drawerLayout,
R.string.drawer_open_or_close,
R.string.drawer_open_or_close) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getActionBar().setTitle(R.string.drawer_open_or_close);
getActionBar().setIcon(R.drawable.icon_144);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle(R.string.drawer_open_or_close);
getActionBar().setIcon(R.drawable.icon_144);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
如您所见,在完全打开和完全关闭状态下,我都将操作栏标题设置为R.string.drawer_open_or_close,这是一个空字符串。我在这两种情况下都设置了应用程序图标。我在这里错过了什么?
编辑:我忘记将抽屉切换设置为DrawerListener,我做了
drawerLayout.setDrawerListener(mToggle);
现在,当我打开导航抽屉时,应用程序强制关闭并且日志猫说
java.lang.NullPointerException@在
getActionBar().setTitle(R.string.drawer_open_or_close);
编辑 2:我想我们不能给出一个空字符串作为标题
LogCat:
01-31 16:01:45.335 13944-13944/com.example.android.effectivenavigation E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.android.handsfree.MainPage$1.onDrawerOpened(MainPage.java:79)
at android.support.v4.widget.DrawerLayout.dispatchOnDrawerOpened(DrawerLayout.java:656)
at android.support.v4.widget.DrawerLayout.updateDrawerState(DrawerLayout.java:616)
at android.support.v4.widget.DrawerLayout$ViewDragCallback.onViewDragStateChanged(DrawerLayout.java:1627)
at android.support.v4.widget.ViewDragHelper.setDragState(ViewDragHelper.java:873)
at android.support.v4.widget.ViewDragHelper$2.run(ViewDragHelper.java:335)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5162)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:756)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:572)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
请显示日志跟踪
-
查看日志跟踪编辑
-
你使用的是什么活动类和主题?
-
活动主题是
android:theme="@style/Theme.AppCompat.Light" >活动课是什么意思?我的活动扩展了ActionBarActivity
标签: android android-fragments android-actionbar navigation-drawer android-actionbaractivity