我正在尝试在选择后将菜单项替换为另一个菜单项。我尝试了以下但它没有按预期工作。任何解决方案。感谢。
menu.xml文件是:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/add" android:visible="true" android:enabled="true" android:title="Add"></item>
<item android:id="@+id/delete" android:visible="false" android:enabled="true" android:title="Delete"></item>
</menu>
MyActivity.java中的代码是:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.defaultmenu, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(isAdded) {
menu.removeItem(R.id.add);
menu.add(0, R.id.delete, 0, "Delete");
} else {
menu.removeItem(R.id.delete);
menu.add(0, R.id.add, 0, "Add");
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.add:
isLogin = true;
return true;
case R.id.delete:
isLogin = false;
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:3)
刷新菜单调用invalidateOptionsMenu();
我想在onPrepareOptionsMenu
,你可以做..
if(isAdded) {
menu.findItem(R.id.add).setVisible(false);
menu.findItem(R.id.delete).setVisible(true);
return true;
} else {
menu.findItem(R.id.add).setVisible(true);
menu.findItem(R.id.delete).setVisible(false);
return true;
}
return super.onPrepareOptionsMenu(menu);
答案 1 :(得分:0)
试试这个
public static final int ADD_CATEGORY_INDEX = Menu.FIRST;
public static final int DELETE_CATEGORY_INDEX= Menu.FIRST+1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, ADD_CATEGORY_INDEX, 0, "Add");
menu.add(0, DELETE_CATEGORY_INDEX, 0, "delete");
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ADD_CATEGORY_INDEX:
break;
}
case DELETE_CATEGORY_INDEX:
break;
}
return true;
}
答案 2 :(得分:0)
我更改了onPrepareOptionsMenu
,现在它正常工作。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
//menu.clear();
if(isadded) {
menu.removeItem(R.id.add);
menu.removeItem(R.id.delete);
menu.add(0, R.id.delete, 0, "Delete");
} else {
menu.removeItem(R.id.add);
menu.removeItem(R.id.delete);
menu.add(0, R.id.add, 0, "Add");
}
return super.onPrepareOptionsMenu(menu);
}