Как динамически менять иконку bottomAppBar

В моем приложении я хочу использовать com.google.android.material.bottomappbar.BottomAppBar Посмотреть.
Я хочу показать некоторые пункты меню в этом представлении и для этого я пишу этот код: detailBottomAppBar.replaceMenu(R.menu.empty_menu); и с помощью этого кода я могу показать пункты меню в этом представлении.

Я хочу динамически изменить значок меню для одного из пунктов этого меню. но я не знаю, как я могу это сделать.

Я могу изменить значок с помощью прослушивателя щелчков с кодом ниже

        detailBottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.detailMenu_favorite:
                        Toast.makeText(getViewContext(), "Favorite", Toast.LENGTH_SHORT).show();
item.setIcon(ContextCompat.getDrawable(getViewContext(), R.drawable.ic_search_24dp));
                        break;
                    case R.id.detailMenu_comment:
                        Toast.makeText(getViewContext(), "Comment", Toast.LENGTH_SHORT).show();
                        break;
                }
                return true;
            }
        });

Но я не хочу менять этот элемент нажатием, я хочу открыть activity изменить значок без прослушивания щелчка.

Как я могу решить это?

1 ответ

Решение

Вы можете сохранить переменную Menu при создании меню. Таким образом, вы можете получить нужный элемент и изменить его.

private Menu _menu;

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
   getMenuInflater().inflate(R.menu.main, menu);
   _menu = menu;
}

Доступ к нужному пункту меню

MenuItem item = _menu.findItem(R.id.menu_item_id);
item.setIcon(ContextCompat.getDrawable(getViewContext(), R.drawable.ic_search_24dp));
Другие вопросы по тегам