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

时间:2018-05-07 07:51:02

标签: android android-optionsmenu

这非常简单。我有以下代码:

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

1 个答案:

答案 0 :(得分:0)

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