这非常简单。我有以下代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
if(isReturn) {
inflater.inflate(R.menu.menu_returned, menu);
return super.onCreateOptionsMenu(menu);
} else {
inflater.inflate(R.menu.menu_return, menu);
MenuItem red = menu.findItem(R.id.action_error);
red.setIcon(R.mipmap.ic_error_red);
// if (sellStatus.equals(Bill.ERROR_CREATE)) {
// red.setIcon(R.mipmap.ic_error_red);
// } else if (sellStatus.equals(Bill.ERROR_DATABASE)) {
// red.setIcon(R.mipmap.ic_error_orange);
// } else{
// red.setVisible(false);
// }
return true;
}
}
XML菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_return"
android:title="Return"
app:showAsAction="withText|always"/>
<item
android:id="@+id/action_error"
android:title=""
app:showAsAction="always"/>
</menu>
我试图更改MenuItem的属性(setIcon,setVisible)。但它不会改变MenutItem属性(我猜,它无法连接MenuItem)。
但它正在接受来自xml的onOptionsItemSelected和图标。 是android bug还是我错过了一些模式?
答案 0 :(得分:0)
在onPrepareOptionsMenu
而不是onCreateOptionsMenu
中更改菜单外观。这允许您根据应用程序的状态更改菜单外观。