Tengo una barra de acción con un elemento de menú. ¿Cómo puedo ocultar/mostrar ese elemento de menú?
Esto es lo que intento hacer:
MenuItem item = (MenuItem) findViewById(R.id.addAction);
item.setVisible(false);
this.invalidateOptionsMenu();
Obtenga un MenuItem
que apunte a dicho elemento, llame a setVisible
en él para ajustar su visibilidad y luego llame a invalidateOptionsMenu()
en su actividad para que el menú de la ActionBar se ajuste en consecuencia.
Actualización: Un MenuItem
no es una vista normal que forma parte de tu diseño. Es algo especial, completamente diferente. Tu código devuelve null
para item
y eso'está causando el fallo. Lo que necesitas en su lugar es hacer:
MenuItem item = menu.findItem(R.id.addAction);
Esta es la secuencia en la que debes llamar:
primero llamar a invalidateOptionsMenu()
y luego dentro de onCreateOptionsMenu(Menu)
obtener una referencia al MenuItem (llamando a menu.findItem()
) y llamar a setVisible()
sobre él
Sí.
invalidateOptionsMenu()
cuando quiera ocultar la opción. Esto llamará a onCreateOptionsMenu()
.onCreateOptionsMenu()
, comprueba la bandera/condición y muestra u
ocultarla de la siguiente manera:MenuItem item = menu.findItem(R.id.menu_Done);
si (flag/condition)) { item.setVisible(false); } else { }