Un cambio en la configuración del dispositivo Android (por ejemplo, "volver a colocar el teclado rígido") siempre llamará al PhoneWindow.onConfigurationChanged()
, que a su vez llamará al reopenMenu()
. Esto hará que se vuelva a abrir el menú de la actividad en ejecución actualmente, en caso de que se muestre.¿Cómo compruebo programáticamente si el menú de mi actividad se muestra en un momento determinado?
Tengo un bloqueo en mi menú implementado en mi anulación onPrepareOptionsMenu()
. El usuario debe ingresar un código cada vez que quiera ver el menú. No quiero que se le pida al usuario que ingrese el código nuevamente, mientras que el menú todavía está activo solo por un cambio de configuración. Por lo tanto, me gustaría saber si hay alguna manera de verificar si el menú de actividad de primer plano actual ya se muestra. Sabiendo esto, podría omitir pedir el código de acceso si el menú ya está activo.
Mi aplicación personalizada solución es utilizar mi propia bandera menuShowing
que yo pongo en onPrepareOptionsMenu
y restablecer en onOptionsItemSelected
y en onKeyDown
si se hace clic en el botón de retroceso.
EDIT:
Parece que un cambio en la configuración de orientación de la pantalla no desencadena este comportamiento. Sin embargo, una diapositiva de teclado duro sí lo hace.
Después de mis diversos esfuerzos, creo que su enfoque booleano personalizado es mejor. Es posible que pueda simplificarlo con 'onPrepareOptionsMenu()': true y 'onOptionsMenuClosed()': false (ya que se llamará seleccionando un elemento o presionando una tecla: atrás, inicio, menú). FYI, puede admitir un tipo de diapositiva de teclado rígido en el emulador configurando las propiedades de hardware para que no tenga un teclado rígido en el retrato y tener uno en el paisaje, en caso de que sea útil. – Sam