Android: 无法在 OnCreateOptionsMenu 中更改 MenuItem 的属性

Android: Can't change properties of MenuItem in OnCreateOptionsMenu

很简单。我有以下代码:

   @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 错误还是我遗漏了一些模式?

更改菜单在 onPrepareOptionsMenu 而非 onCreateOptionsMenu 中的外观。这允许您根据应用程序的状态更改菜单外观。