How to change dynamically bottomAppBar menu icon

918 views Asked by At

In my application I want to use com.google.android.material.bottomappbar.BottomAppBar view.
I want show some menu items into this view and for this I write this code : detailBottomAppBar.replaceMenu(R.menu.empty_menu); , and with this code I can show menu items into this view.

I want to change dynamically the menu icon for one of this menu items. but I don't know how I can make it.

I can to change the icon with a click listener with below code

        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;
            }
        });

But I don't want to change this item with click, I want open activity to change the icon without the click listener .

How can I solve this?

1

There are 1 answers

2
Ezzy On BEST ANSWER

You can save the Menu variable when you're creating the menu. That way you can get the specific item that you want and modify it.

private Menu _menu;

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

Accessing the menu item you want

MenuItem item = _menu.findItem(R.id.menu_item_id);
item.setIcon(ContextCompat.getDrawable(getViewContext(), R.drawable.ic_search_24dp));