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.
问问题
11402 次
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 回答