有没有一种编程方式可以选择菜单选项?基本上,我想在视图中添加一个按钮,使其执行与按下特定菜单选项相同的操作。我考虑尝试调用onOptionsItemSelected(MenuItem item),但我不知道该放什么菜单项。
是的,有一种方法可以选择菜单选项!您关于调用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。
为什么不让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));