2010-09-09 15 views
8

Il problema è che il seguente metodo viene chiamato una sola volta quando si preme il pulsante Menu:Come creare un menu di opzioni dinamiche?

public boolean onCreateOptionsMenu(Menu menu) 

Come posso ricreare il menù in un secondo momento, al fine di modificare alcune opzioni, disabilitare alcune opzioni, ecc?

risposta

22

Override questo (menu Menu) onPrepareOptionsMenu

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 

     MenuItem item = menu.findItem(R.id.refresh); 

     if (item != null) { 
     item.setVisible (shouldIShowThisItem) 
     } 
} 
+0

Questo ha funzionato alla grande. Per chiunque altro, prima di poter modificare le voci di menu in onPrepareOptionsMenu, è necessario eseguire un menu.clear() per eliminare le informazioni correnti. – pcm2a

+0

Non è necessario cancellare il menu se si modificano solo elementi esistenti. Se stai rigenerando o reinventando un menu completamente nuovo, potresti volerlo. – adamp

+0

Non è stato possibile modificare le voci di menu senza cancellarle e ricrearle. Ho provato a ottenere un singolo oggetto con menu.getPositon() ma quando ho cambiato il titolo le modifiche non si riflettevano nel menu. – pcm2a

0
invalidateOptionsMenu(); 

se si vuole spingere il menu cambia usano questo.

Problemi correlati