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: Obtener una vista Referencia a un elemento de menú
  • Dynamic TextView en ActionBar
  • Cambiar el menú de opciones durante el tiempo de ejecución - invalidateOptionsMenu ()
  • Diálogo de alerta desde dentro de onOptionsItemSelected android
  • Cómo cambiar el tamaño del texto del menú
  • Reutilización de la barra de acción en todas las actividades de aplicación
  • Los iconos de menú de Android no se muestran cuando el nivel de API está por encima de 10
  • Cómo agregar menú a un diseño
  • Elementos del submenú de la barra de acciones Android mostrados en la parte superior de la barra de acción en lugar de debajo de la barra
  • Cómo cambiar la sangría de los elementos del submenú en un NavigationView?
  • Cómo hacer un menú transparente de lujo como el "menú compartido" en la galería de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.