7

ho bisogno di essere in grado di cambiare il menu delle opzioni (quello che viene visualizzato premendo il pulsante menu) su Android, in modo che in un caso (ad esempio su un premuto), utilizzerà una risorsa menu specifica (file XML come/res/menu/...) per il menu e, in un altro caso, utilizzare un file XML diverso.android - cambia il menu delle opzioni in modo dinamico, ma gonfiando da XML

finora ho visto solo esempi di farlo senza XML (esempio here e here), e hanno funzionato bene, ma voglio essere in grado di cambiare l'intero menu in alcuni casi. ho provato a modificare le soluzioni che ho trovato, ma nessuna delle mie prove ha funzionato.

se possibile, preferirei ricreare il menu solo se è necessario aggiornarlo con una risorsa di menu diversa da quella corrente.

per favore aiutatemi.

risposta

16

Se si desidera modificare il menu Opzioni in qualsiasi momento dopo la prima creazione, è necessario sovrascrivere il metodo onPrepareOptionsMenu().

public boolean onPrepareOptionsMenu (Menu menu) {  
    menu.clear();  
    if (CASE_1 == 0) { 
     CASE_1 = 1; 
     getMenuInflater().inflate(R.menu.secondmenu, menu); 
    } 
    else { 
     CASE_1 = 0; 
     getMenuInflater().inflate(R.menu.firstmenu, menu); 
    }  
    return super.onPrepareOptionsMenu(menu); 
} 

dove CASO_1 si riferisce al menu che si desidera visualizzare in base alle proprie esigenze.

+0

non significa che verrà ricreato ogni volta che si visualizza il menu, al contrario di onCreateOptionsMenu? –

+0

sì sarà ricreato e tu l'hai dichiarato (preferirei ricreare il menu) –

+2

Oppure puoi avere un singolo xml e setVisiblity di ogni menu itenm su true o false come richiesto. consulta questo http://stackoverflow.com/questions/9030268/set-visibility-in-menu-programatically-android –