Android: невозможно изменить свойства MenuItem в OnCreateOptionsMenu - PullRequest
0 голосов
/ 07 мая 2018

Это очень просто. У меня есть следующий код:

   @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).

Но он принимает OnOptionsItemSelected и значки из xml. Это ошибка Android или я пропустил какой-то шаблон?

1 Ответ

0 голосов
/ 07 мая 2018

Измените внешний вид меню в onPrepareOptionsMenu вместо onCreateOptionsMenu. Это позволит вам изменить внешний вид меню в соответствии с состоянием вашего приложения.

...