2011-10-05 8 views
27

È chiaro per Activities - il metodo viene chiamato prima che venga visualizzato il menu. Ma per quanto riguarda quando è sempre visualizzato? Come attivarlo per essere richiamato per aggiornare dinamicamente menuItems?Quando e quanto spesso viene chiamato il metodo onPrepareOptionsMenu() per ActionBar?

+0

È possibile utilizzare il metodo onPrepareOptionsMenu() per abilitare/disabilitare in modo efficiente gli elementi o modificare in modo dinamico il contenuto. – Nepster

risposta

53

Utilizzare invalidateOptionsMenu() per attivare il metodo onPrepareOptionMenu() come suggerito dal documento.

On Android 3.0 and higher, you must call invalidateOptionsMenu() when you want to update the menu, because the menu is always open. The system will then call onPrepareOptionsMenu() so you can update the menu items.

+0

Se si utilizza ActionBarSherlock, è possibile utilizzare il metodo di attività: supportInvalidateOptionsMenu(); Se sei in un frammento, chiama getActivity(). SupportInvalidateOptionsMenu(); anziché – edrian

0

Nota se la versione min SDK è inferiore a nido d'ape (aka Android 3.0 aka livello di API 11), e si utilizza ActionBarActivity si può chiamare supportInvalidateOptionsMenu() che è la versione della libreria di supporto di invalidateOptionsMenu ().

Se il tuo menu cambia in base a un intento in entrata su onCreate(), puoi semplicemente eseguire gli aggiornamenti in onPrepareOptionMenu(), se cambierai dinamicamente il menu più avanti nel ciclo di vita delle attività dovrai chiamare invalideOptionsMenu, o supportoInvalidateOptionsMenu a seconda delle versioni di sdk min e target.

Problemi correlati