1

在我的应用程序中,我想使用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;
            }
        });

但我不想用 click改变这个项目,我想在没有点击监听器的情况下 打开 activity改变图标。

我该如何解决这个问题?

4

1 回答 1

3

您可以在创建菜单时保存 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));
于 2018-11-08T08:05:38.663 回答