2010-09-09 18 views
8

Das Problem ist, dass die folgende Methode einmal aufgerufen wird, wenn die Menü-Taste gedrückt wird:Wie erstellt man ein dynamisches Optionsmenü?

public boolean onCreateOptionsMenu(Menu menu) 

Wie kann ich das Menü zu einem späteren Zeitpunkt, um neu einige Optionen zu ändern, einige Optionen deaktivieren, etc?

Antwort

22

außer Kraft setzen diese onPrepareOptionsMenu (Menü Menü)

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 

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

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

Das hat super funktioniert. Bevor Sie die Menüeinträge in onPrepareOptionsMenu ändern können, müssen Sie noch eine menu.clear() ausführen, um den aktuellen Inhalt zu löschen. – pcm2a

+0

Sie müssen das Menü nicht löschen, wenn Sie nur vorhandene Elemente ändern. Wenn Sie ein völlig neues Menü neu erstellen oder neu erstellen möchten, sollten Sie dies tun. – adamp

+0

Ich konnte die Menüoptionen nicht ändern, ohne sie zu löschen und neu zu erstellen. Ich habe versucht, ein einzelnes Element mit menu.getPositon() zu bekommen, aber wenn ich den Titel änderte, wurden die Änderungen nicht im Menü angezeigt. – pcm2a

0
invalidateOptionsMenu(); 

wenn Sie das Menü ändert sich dies nutzen drücken.

Verwandte Themen