Detectar haga clic en el botón de menú Desbordamiento de la barra de acciones

¿Puedo detectar clic / toque en el botón de menú de la barra de acción, es decir, se utiliza para mostrar elementos de menú de desbordamiento?

De forma predeterminada, abre la lista con un elemento "Configuración". Aquí está la captura de pantalla:

Hasta ahora está detectando clic en "2" pero quiero detectar clic en "1".

Para detectar el clic en el menú de desbordamiento tiene tal código:

@Override public boolean onMenuOpened(int featureId, Menu menu) { if(featureId == AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR && menu != null){ //overflow menu clicked, put code here... } return super.onMenuOpened(featureId, menu); } @Override public void onPanelClosed(int featureId, Menu menu) { ... } 

Para detectar haga clic en los elementos del menú, en caso de que tenga un menú como ese:

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu2" android:alphabeticShortcut="b" android:title="Menu No. 2" android:orderInCategory="2"> <menu > <group android:id="@+id/group2" android:checkableBehavior="single"> <item android:id="@+id/submenu1" android:title="SubMenu No. 1" /> <item android:id="@+id/submenu2" android:title="SubMenu No. 2" /> </group> </menu> </item> </menu> 

Debe ser capaz de detectar el clic en

OnOptionsItemSelected

 @Override public boolean onOptionsItemSelected(MenuItem item) { Log.w("ANDROID MENU TUTORIAL:", "onOptionsItemSelected(MenuItem item)"); // Handle item selection switch (item.getItemId()) { case R.id.menu2: Toast.makeText(this, "Clicked: Menu No. 2", Toast.LENGTH_SHORT).show(); return true; ... } 

Finalmente encontré la solución. Anular FragmentActivity.onKeyDown

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub switch (keyCode) { case KeyEvent.KEYCODE_MENU: // Do Sometihng break; default: break; } return super.onKeyDown(keyCode, event); } 

De forma predeterminada, haciendo clic en el botón de desbordamiento se muestra el menú de opciones, así que creo que debe manejar interceptar el evento y luego hacer lo que quiera por sobreescribir Activity.onPrepareOptionsMenu

Esto fue un poco complicado, ya que no pude encontrar una identificación para el botón de desbordamiento, por lo que he utilizado este hack. En su Activity :

 private boolean actionBarClicked = false; @Override public boolean onOptionsItemSelected (MenuItem item) { if (item.getId() == ) actionBarClicked = true; return false; // Let default processing occur } @Override public boolean onPrepareOptionsMenu (Menu menu) { if (actionBarClicked) { // Overflow button of ActionBar was clicked, do what you want here. actionBarClicked = false; } ... } 
  • ActionBarCompat: Ocultar ActionBar antes de crear la actividad (bug?)
  • El icono de inicio de la barra de acción PreferenceActivity no volverá a casa (a diferencia de ET :)
  • ShowAsAction = "ifRoom" no muestra el elemento incluso cuando hay un montón de espacio
  • Las pestañas de la barra de acciones no llenan el ancho de la pantalla
  • Android: cambia el título en ActionBar desde el Gaveta de navegación
  • Mostrar sólo las pestañas con actionBarSherlock
  • ¿Cómo puedo añadir el campo Edit Text y el botón en ActionBar?
  • ActionBarSherlock: cambiar homeAsUpIndicator no funciona
  • ActionBar nativo selectableItemBackground con ActionBarSherlock
  • Android ActionBar transparente con ActionSherlock en v19
  • Título centrado en la barra de acciones con botones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.