Как динамически менять иконку bottomAppBar - PullRequest
0 голосов
/ 08 ноября 2018

В моем приложении я хочу использовать 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 Ответ

0 голосов
/ 08 ноября 2018

Вы можете сохранить переменную 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...