2012-08-23 15 views
9

Al usar el ActionBar en Android, ¿cómo se actualiza el menú de opciones? He intentado ocultar y mostrar la barra, junto con obtener una nueva instancia de ella con "getSupportActionBar()"Menú de opciones de recreación de Android ActionBar

Estoy tratando de implementar un botón de inicio/cierre de sesión que cambiará dinámicamente en función del estado del usuario.

Aquí es mi método onCreateOptionsMenu

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (loggedIn) 
     menu.add(0, MENU2, 0, "Logout").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    else 
     menu.add(0, MENU2, 0, "Login").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    menu.add(0, MENU1, 0, "Home").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    return super.onCreateOptionsMenu(menu); 
} 

Gracias!

+0

posible duplicado de [Actualización de la barra de acción en Android 3.0] (http://stackoverflow.com/ preguntas/6602534/refreshing-the-action-bar-in-android-3-0) – CommonsWare

+0

Pregunta general: ¿Qué es la etiqueta Stackoverflow para elegir una mejor respuesta cuando dos respuestas son iguales y se responden dentro del mismo tiempo el uno del otro como ¿bien? –

+0

Las mejores respuestas (más detalles, muestras de código, enlaces, etc.) prevalecen sobre las respuestas más rápidas. Para respuestas de mérito equivalente en ambas áreas ... ¿lanzar una moneda? – CommonsWare

Respuesta

11

En su llamada FragmentActivity invalidateOptionsMenu()

Este es también un método público, por lo que si desea actualizar desde una llamada fragmento getActivity().invalidateOptionsMenu()

Por cierto, si usted está utilizando SherlockActionBar Tendrá que llamar getSherlockActivity().invalidateOptionsMenu() del fragmento, o obtendrá una excepción.

7
invalidateOptionsMenu() 

requiere nivel de la API 11 ...

de menor uso API:

supportInvalidateOptionsMenu() 
Cuestiones relacionadas