0

我目前正在开发一个 android 项目,但遇到了一个奇怪的问题。它可能是我想念的非常简单的东西,但看不到我做错了什么。

我在我的 XML 文件中添加了一个新菜单项,然后我尝试引用新菜单项来显示或隐藏它。当我运行应用程序时,菜单项显示在屏幕上,所以我知道我的 XML 正确且文件正确,但是当我尝试执行 findViewById 时,它返回 null。

下面是代码。

MenuItem mnuUpgrade;
    mnuUpgrade = (MenuItem)findViewById(R.id.mnu_upgrade);
            if (common.checkForProVersion())
            {
                //mnuUpgrade.setVisible(false);
            }
            else
            {
                //mnuUpgrade.setVisible(true);
            }

下面是我的 XML 文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/mnu_addLogin"
        android:title="New Login"
        android:icon="@android:drawable/ic_menu_add"
        android:showAsAction="always">
    </item>
    <item android:id="@+id/mnu_search"
        android:title="Search"
        android:icon="@android:drawable/ic_menu_search"
        android:showAsAction="always">
    </item>
    <item android:id="@+id/mnu_settings"
        android:title="Settings"
        android:showAsAction="ifRoom"
        android:icon="@android:drawable/ic_menu_manage">
    </item>
    <item android:id="@+id/mnu_upgrade"
        android:title="Upgrade"
        android:showAsAction="ifRoom"
        android:icon="@android:drawable/ic_menu_upload">
    </item>
    <item android:id="@+id/mnu_logout"
        android:title="Log out"
        android:showAsAction="ifRoom"
        android:icon="@android:drawable/ic_menu_close_clear_cancel">
    </item>
</menu>

感谢您的任何帮助,您可以提供。

4

1 回答 1

2

findViewById找不到 MenuItem 。你可以onPrepareOptionsMenu在你的活动中使用。当用户尝试打开菜单时调用它。你可以试试这个:

@Override
public boolean onPrepareOptionsMenu (Menu menu) {
    MenuItem item = menu.getItem(3);
    // the number is the position of your "upgrade" item in the menu, starting from 0
    // then check for the pro version
    if(common.checkForProVersion()) {
        item.setVisible(false);
    } else {
        item.setVisible(true);
    }
}
于 2012-12-19T23:48:25.530 回答