modo - Android: ¿Cómo activar/desactivar el elemento del menú de opciones al hacer clic en el botón?
no puedo activar opciones de desarrollador (6)
Puedo hacerlo fácilmente cuando estoy usando los métodos onCreateOptionsMenu
o onOptionsItemSelected
.
Pero tengo un botón en algún lugar de la pantalla, y al hacer clic en ese botón, debería habilitar / deshabilitar los elementos del menú contextual.
Gracias...
De todos modos, la documentación cubre todas las cosas.
Cambio de elementos de menú en tiempo de ejecución
Una vez que se crea la actividad, se llama al método
onCreateOptionsMenu()
solo una vez, como se describió anteriormente. El sistema guarda y reutiliza elMenu
que defina en este método hasta que se destruya su actividad. Si desea cambiar el menú de Opciones en cualquier momento después de que se creó por primera vez, debe anular el métodoonPrepareOptionsMenu()
. Esto le pasa el objeto de menú tal como existe actualmente. Esto es útil si desea eliminar, agregar, deshabilitar o habilitar elementos del menú según el estado actual de su aplicación.
P.ej
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
if (isFinalized) {
menu.getItem(1).setEnabled(false);
// You can also use something like:
// menu.findItem(R.id.example_foobar).setEnabled(false);
}
return true;
}
En Android 3.0 y versiones posteriores, se considera que el menú de opciones siempre está abierto cuando los elementos del menú se presentan en la barra de acciones. Cuando ocurre un evento y desea realizar una actualización de menú, debe llamar a invalidateOptionsMenu()
para solicitar que el sistema llame onPrepareOptionsMenu()
.
En general, puede cambiar las propiedades de sus vistas en tiempo de ejecución:
(Button) item = (Button) findViewById(R.id.idBut);
y entonces...
item.setVisibility(false)
pero
si desea modificar la visibilidad de las opciones desde ContextMenu, presione su botón, puede activar un indicador, y luego en onCreateContextMenu puede hacer algo como esto:
@Override
public void onCreateContextMenu(ContextMenu menu,
View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle(R.string.context_title);
if (flagIsOn()) {
addMenuItem(menu, "Option available", true);
} else {
Toast.makeText(this, "Option not available", 500).show();
}
}
espero que esto ayude
En todas las versiones de Android, la manera más fácil: use esto para MOSTRAR un ícono de acción de menú como deshabilitado Y para hacer que FUNCTION también esté deshabilitado:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.menu_my_item);
if (myItemShouldBeEnabled) {
item.setEnabled(true);
item.getIcon().setAlpha(255);
} else {
// disabled
item.setEnabled(false);
item.getIcon().setAlpha(130);
}
}
Puede guardar el elemento como una variable al crear el menú de opciones y luego cambiar sus propiedades a voluntad.
private MenuItem securedConnection;
private MenuItem insecuredConnection;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.connect_menu, menu);
securedConnection = menu.getItem(0);
insecuredConnection = menu.getItem(1);
return true;
}
public void foo(){
securedConnection.setEnabled(true);
}
simplificar la versión de @Vikas
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
menu.findItem(R.id.example_foobar).setEnabled(isFinalized);
return true;
}
la mejor solución cuando se realiza en el cajón de navegación
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.setGroupVisible(0,false);
return true;
}