9

Is there a way to programmatically select a menu option? Basically, I want a button in a view to perform the same action as pressing a specific menu option. I was thinking of trying to call onOptionsItemSelected(MenuItem item) but I don't know what to put for the menu item.

4

3 回答 3

17

是的,有一种方法可以选择菜单选项!你是正确的关于调用 onOptionsItemSelected(MenuItem item) 这是获取 MenuItem 的方法:

1)您需要做的第一件事是在此处获取 Activity 中 Menu 类的引用:

private Menu menu;

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
   this.menu = menu;
   return super.onCreateOptionMenu(menu);
}

2) 所以基本上,Menu 类包含所有的菜单项。所以一旦你有了这个参考,你就可以像这样模拟菜单点击:

onOptionsItemSelected(menu.findItem(R.id.action_id));

...其中 action_id 是您要选择的菜单项的 ID。您可以在菜单 xml 中找到此 ID。

于 2013-08-17T14:21:07.477 回答
15

为什么不让两个 UI 事件调用一个通用方法?

于 2012-11-28T22:06:29.217 回答
2

我也在找这个。虽然在检查项目时调用使用的方法是有意义的,但这不会将菜单项设置为在 UI 中检查。

所以我最终做的是:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

MenuItem menuItem = (MenuItem)navigationView.getMenu().findItem(R.id.nav_menu_item_1);
        menuItem.setChecked(true);
        onNavigationItemSelected(menuItem);

以下对我来说没有按预期工作:

onOptionsItemSelected(menu.findItem(R.id.action_id));

于 2017-09-29T19:51:50.693 回答