android - icono - ¿Cómo puedo obtener el menú de opciones de mi Actividad?
menu bar en android studio (5)
Hay varios métodos de devolución de llamada que proporcionan menú como parámetro.
Puede que quieras manipularlo allí.
Por ejemplo:
onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
onCreateOptionsMenu(Menu menu)
onCreatePanelMenu(int featureId, Menu menu)
Hay varios más, mejor eche un vistazo a la documentación de actividades y busque el método que desee: http://developer.android.com/reference/android/app/Activity.html
En algunos métodos de mi actividad, deseo verificar el título del menú o saber si está marcado o no. ¿Cómo puedo obtener el menú de la actividad? Necesito algo como this.getMenu()
Llame a invalidateOptionsMenu () en lugar de pasar el objeto del menú.
Por lo que pude entender, lo que quiere aquí es lo que puede ayudarlo:
1. Consulte este tutorial sobre el menú de opciones .
2. Cada vez que el usuario presione el botón de menú puede verificar su título a través de getTitle()
.
3. O si desea saber el último elemento del menú marcado o seleccionado cuando el usuario no ha presionado el botón de menú, debe almacenar las preferencias cuando el usuario presiona.
Tenga cuidado con invalidateOptionsMenu()
. Recrea el menú completo. Esto tiene muchos gastos generales y restaurará los componentes integrados como SearchView
. Me tomó bastante tiempo rastrear por qué mi SearchView
cerraría "aleatoriamente".
Terminé capturando el menú publicado por Dark y luego llamé onPrepareOptionsMenu(Menu)
según fuera necesario. Esto cumplió con mi requisito sin efectos secundarios desagradables. Gotcha: asegúrese de hacer una comprobación nula en caso de que llame onPrepareOptionsMenu()
antes de que se cree el menú. Hice esto como a continuación:
private Menu mOptionsMenu;
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
mOptionsMenu = menu
...
}
private void updateOptionsMenu() {
if (mOptionsMenu != null) {
onPrepareOptionsMenu(mOptionsMenu);
}
}
puedes hacerlo pasando el objeto de menú a tu clase de actividad
public class MainActivity extends Activity
{
...
...
private Menu _menu = null;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
_menu = menu;
return true;
}
private Menu getMenu()
{
//use it like this
return _menu;
}
}