2012-08-23 20 views
9

Quando si utilizza ActionBar in Android, come si aggiorna il menu delle opzioni? Ho provato a nascondere e mostrare la barra, ottenendo una nuova istanza con "getSupportActionBar()"Android ActionBar Ricrea Menu Opzioni

Sto cercando di implementare un pulsante Login/Logout che cambierà dinamicamente in base allo stato dell'utente.

Ecco il mio metodo 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); 
} 

Grazie!

+0

possibile duplicato [Aggiornamento barra delle operazioni in Android 3.0] (http://stackoverflow.com/ domande/6602534/refreshing-the-action-bar-in-android-3-0) – CommonsWare

+0

Domanda generale - Qual è l'etichetta Stackoverflow per scegliere la risposta migliore quando due risposte sono uguali e hanno risposto più o meno nello stesso momento l'una dell'altra bene? –

+0

Le risposte migliori (più dettagli, esempi di codice, collegamenti ecc.) Annullano le risposte più rapide. Per le risposte di merito equivalente in entrambe le aree ... lancia una moneta? – CommonsWare

risposta

11

nella chiamata FragmentActivity invalidateOptionsMenu()

Questo è anche un metodo pubblico, quindi se si desidera aggiornare da una chiamata frammento getActivity().invalidateOptionsMenu()

A proposito, se si sta utilizzando SherlockActionBar avrete bisogno di chiamare getSherlockActivity().invalidateOptionsMenu() dal frammento, o otterrai un'eccezione.

7
invalidateOptionsMenu() 

richiede livello di API 11 ...

per l'uso di API inferiore:

supportInvalidateOptionsMenu() 
Problemi correlati