Apertura del submenú en la barra de acción en el botón del menú Hardware

El título lo explica todo. Quiero abrir un submenú en la barra de acción al hacer clic en el botón del menú Hardware

Este es el código y funciona bien la primera vez que hago clic en el menú. Cada vez que sólo parpadea (se abre y se cierra instantáneamente)

private Menu mainMenu; public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options, menu); mainMenu = menu; return true; } public boolean onKeyDown(int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN){ switch(keyCode) { case KeyEvent.KEYCODE_MENU: mainMenu.performIdentifierAction(R.id.more, 0); return true; } } return super.onKeyDown(keyCode, event); } 

Y aquí es options.xml

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/settings" android:icon="@drawable/ic_menu_preferences" android:showAsAction="ifRoom|withText" android:title="Settings"/> <item android:id="@+id/about" android:icon="@drawable/ic_menu_info_details" android:showAsAction="ifRoom|withText" android:title="About"/> <item android:id="@+id/more" android:icon="@drawable/ic_menu_moreoverflow_normal_holo_dark" android:showAsAction="always|withText" android:title="More"> <menu> <item android:id="@+id/changelog" android:icon="@drawable/ic_menu_recent_history" android:showAsAction="ifRoom|withText" android:title="Changelog"/> <item android:id="@+id/update" android:icon="@drawable/ic_menu_refresh" android:showAsAction="ifRoom|withText" android:title="Update Check"/> <item android:id="@+id/check" android:icon="@drawable/ic_menu_help" android:showAsAction="ifRoom|withText" android:title="Compatibility Check"/> </menu> </item> </menu> 

ACTUALIZACIÓN: (Solución) Sólo cambió el método onKeyDown () a onKeyUp () y ahora se pega

One Solution collect form web for “Apertura del submenú en la barra de acción en el botón del menú Hardware”

Prueba esto:

 public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);// <--- add this MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options, menu); mainMenu = menu; return true; } //override this method instead of onKeyDown().... @Override public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); int menuId = item.getItemId(); if(menuId == R.id.settings) { //do settings } //else if(menuId = ...) {....} return true; } 
  • Android - ventana de diálogo de texto desde un menú de opciones
  • Menú de la cinta de opciones Android
  • Simple_list_item_2 en Android
  • El estado marcado de MenuItem no se muestra correctamente por su icono
  • Ventana filtrada al salir de la aplicación a través del menú (emergente)
  • Diferencia registerForContextMenu y setOnCreateContextMenuListener?
  • Diálogo de alerta desde dentro de onOptionsItemSelected android
  • Dynamic TextView en ActionBar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.