java - 当我单击带有滑动菜单的菜单图标时崩溃

标签 java android actionbarsherlock android-menu slidingmenu

使用库 slidermenu 和 actionbarsherlock 我尝试编写代码以使操作栏中的图标可单击,但出现崩溃错误。这是切换的代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        menu.toggle();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

logcat 说:

10-01 15:18:00.134: E/AndroidRuntime(27038): FATAL EXCEPTION: main
10-01 15:18:00.134: E/AndroidRuntime(27038): java.lang.NullPointerException
10-01 15:18:00.134: E/AndroidRuntime(27038):    at com.db.batt.MainActivity.onOptionsItemSelected(MainActivity.java:512)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at android.support.v4.app.Watson.onMenuItemSelected(Watson.java:118)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at com.actionbarsherlock.ActionBarSherlock.callbackOptionsItemSelected(ActionBarSherlock.java:604)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchOptionsItemSelected(ActionBarSherlockNative.java:92)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:204)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at com.android.internal.widget.ActionBarView$3.onClick(ActionBarView.java:171)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at android.view.View.performClick(View.java:4247)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at android.view.View$PerformClick.run(View.java:17733)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at android.os.Handler.handleCallback(Handler.java:730)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at android.os.Looper.loop(Looper.java:137)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at android.app.ActivityThread.main(ActivityThread.java:5323)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at java.lang.reflect.Method.invokeNative(Native Method)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at java.lang.reflect.Method.invoke(Method.java:525)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:743)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559)
10-01 15:18:00.134: E/AndroidRuntime(27038):    at dalvik.system.NativeStart.main(Native Method)

如何解决?

编辑: 我的 onCreate 中的滑动菜单

SlidingMenu menu;
        menu = new SlidingMenu(this);
        menu.setMode(SlidingMenu.LEFT);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setShadowWidth(50);
        menu.setFadeDegree(0.30f);
        menu.setSlidingEnabled(true);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menu.setBehindWidth(420);
        menu.setMenu(R.layout.menu_frame);
        //getActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

所以 menu 没有被声明?

最佳答案

我敢打赌,您还没有初始化 menu 变量以及这一行。-

 menu.toggle();

抛出NullPointerException

编辑

您在 onCreate 中声明了一个局部变量 menu,但尝试访问 onOptionsItemSelected 中的实例变量。删除该行。-

SlidingMenu menu;

关于java - 当我单击带有滑动菜单的菜单图标时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19117353/

相关文章:

android - 准备自定义操作栏

java - Libgdx:如何将控件与可移动对象分开?

java - 使用泛型按类型进行依赖注入(inject) - 它是如何工作的?

java - android中的productFlavors和包

android - 字节分配内存不足(位图作为字符串到使用 soap 的 web 服务)

android - 让用户改变默认方向

java - java中继承中实现代码重用

java - Android:接口(interface)与 get 方法

java - 如何通过另一个 Activity 显示数据库中的特定行?

Android - ActionbarSherlock 样式配置应该是什么?