This is how I solved the problem
mainMenu.performIdentifierAction(id_of_menu_item, 0);
So, in your case, I would suggest that it would be so.
private Menu mainMenu; // local variable for menu @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater i = getSupportMenuInflater(); i.inflate(R.menu.main_menu, menu); SubMenu subMenu = (SubMenu) menu.findItem(R.id.actionbar_submenu); mainMenu = menu; // store the menu in an local variable return super.onCreateOptionsMenu(menu); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN){ switch(keyCode) { case KeyEvent.KEYCODE_MENU: SubMenu subMenu = (SubMenu) mainMenu.findItem(R.id.actionbar_submenu); mainMenu.performIdentifierAction(subMenu.getItem().getItemId(), 0); return true; } } return super.onKeyDown(keyCode, event); }
In short:
- Saving a menu in a local variable
- Use this variable to search for submenus.
- Use this variable to call the
performIdentifierAction method
Hope this works.
Fredrik sundmyhr
source share