我目前正在开发一个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>
感谢您提供的任何帮助。
答案 0 :(得分: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);
}
}