如何在Android上禁用和启用菜单选项?

时间:2011-07-20 08:33:58

标签: android contextmenu

我正在尝试禁用并启用菜单选项,但它显示错误:Nullpointer异常。

这是我的代码:

mnu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/Add" android:title="Add" android:icon="@drawable/add"/>

<item android:id="@+id/bill_menu" android:title="Bill" android:enabled="false" />


</menu>

我在我的java类中使用

 //creating menu
    public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();

    inflater.inflate(R.menu.mnu, menu);



    MenuItem mi=((MenuItem) this.findViewById(R.id.bill_menu));
    mi.setEnabled(true);    
    }

    return true;

    }

5 个答案:

答案 0 :(得分:6)

替换

MenuItem mi=((MenuItem) this.findViewById(R.id.bill_menu));

MenuItem mi = menu.findItem(R.id.bill_menu);

答案 1 :(得分:3)

要禁用选项菜单 - 覆盖onPrepareOptionsMenu()并返回false,如onPrepareOptionsMenu()中所述。

关于例外的一些建议:

  1. 尝试调用super.onCreateOptionsMenu(menu)
  2. 确定哪个实际为null并共享logcat输出。

答案 2 :(得分:1)

如果覆盖onCreateOptionsMenu()并在其中添加菜单项并覆盖onPrepareOptionsMenu()以更改项目的启用,那不是更好吗?这样可以降低代码中出错的几率,并且您将不再遇到现在遇到的问题。

答案 3 :(得分:0)

我出现了同样的问题,我找到了这个问题的答案。 Enable/Disable Menu

希望它有所帮助。

答案 4 :(得分:0)

Android开发者网站已经有了一个帮助/手册:

http://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu