Usando invalidateOptionsMenu () con el sistema de inicio de sesión (Android)
Estoy tratando de obtener mi menú de opciones para volver a dibujar (desde dentro de la misma actividad) que yo llamo un diálogo de inicio de sesión.
Aquí está la configuración. Desde cualquier actividad de la aplicación, el usuario puede hacer clic en el menú de desbordamiento / opciones y hacer clic en Inicio de sesión. Se abrirá un cuadro de diálogo y es de esperar que se logren con éxito. El cuadro de diálogo finaliza (). Si hace clic en el menú todavía dice "login" – y no "logout". Parece que no estoy usando invalidateOptionsMenu derecho? Aquí está el código:
- ¿Cómo puedo usar onCreateOptionsMenu en un Fragmento dentro de una pestaña Actividad? (Sherlock ActionBar)
- El menú Opciones no incluye los iconos
- OpenOptionsMenu () no funcionará en appcompat-v7 22.1.0 o posterior
- OnCreateOptionsMenu antes de onCreate android
- Hacer clic en icono de hamburguesa en la barra de herramientas no abre Cajón de navegación
Opciones Código de menú desde donde se llama el cuadro de diálogo:
case R.id.Login: Intent i = new Intent(this, Login.class); startActivityForResult(i, 0); return true;
Login.class es un diálogo. Cuando el usuario hace clic en el botón Enviar en el diálogo, esto sucede:
// set log in var's here Intent in = new Intent(); setResult(1, in); finish();
Entonces de vuelta en la actividad original:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == 1) { MyActivity.this.invalidateOptionsMenu(); } }
Usando un Toast, he confirmado que "1" está siendo llamado.
¿Cómo invalido y vuelvo a dibujar el menú para que luego incluya la opción de cierre de sesión (ya que el usuario ya está conectado?)
EDITAR:
@Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem Rules = menu.findItem(R.id.Rules); MenuItem About = menu.findItem(R.id.About); MenuItem Profile = menu.findItem(R.id.Profile); MenuItem Login = menu.findItem(R.id.Login); MenuItem Logout = menu.findItem(R.id.Logout); // set the menu options depending on login status if (LoggedStatus == true) { // show the log out option Logout.setVisible(true); Login.setVisible(false); Rules.setVisible(true); Profile.setVisible(true); About.setVisible(true); } else { // show the log in option Logout.setVisible(false); Login.setVisible(true); Rules.setVisible(true); Profile.setVisible(false); // hide About.setVisible(true); } return true; }
- El menú de opciones de onCreate no se muestra en android 3.1
- El icono del menú de opciones de Android no se mostrará
- Ajustar el icono al grupo en el menú de opciones
- Cómo ocultar OptionsMenu en NavigationDrawer utilizando Fragmentos?
- ¿Cómo implemento el método onCreateOptionsMenu en un SherlockFragment?
- La tecla programable del menú no se muestra en dispositivos Android Lollipop
- Cómo cambiar el icono de navegación de la barra de herramientas y el margen del menú de opciones
- El menú de opciones que no se muestra en ICS utilizando la biblioteca de compatibilidad
Me gustaría echar un vistazo a esto: http://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu
Llamar invalidateOptionsMenu()
en Android 3.0+ llamará onPrepareOptionsMenu()
. Un Menu
se pasa a ese método y desea realizar los cambios en el menú que utiliza ese objeto, ya sea agregar o quitar elementos de menú.
Tenga esto en cuenta para onPrepareOptionsMenu()
:
Debe devolver true para que el menú se muestre; Si devuelve false no se mostrará.
Editar: lo siento de alguna manera se perdió su código en la parte inferior. Déjame comprobar esto muy rápido.
Edit2: Estás olvidando llamar a super.onPrepareOptionsMenu(menu);
Edit3: Ahora que ha determinado que el menú funciona, lo único que podría estar causando que no se muestre LoggedStatus
. Asegúrese de que se está modificando adecuadamente debe resolver todo.
@KickingLettuce
Ejecutarlo en el tipo MenuItem. Android no puede determinar si "setVisible" es aplicable o puede invocar para la variable "Reglas".
Reglas MenuItem = (MenuItem) menu.findItem (R.id.Rules);
que funcionará. Espero eso ayude 🙂
- Análisis de la respuesta compleja del jabón
- Compartir a través de (facebook, twitter …) en Android Phonegap APP