it-swarm.com.de

Was macht das onPrepareOptionsMenu?

Ich möchte Option Menu für Android erstellen, ich habe diese Seite besucht. In ihrem Skript fand ich onPrepareOptionsMenu. Ich versuche, den Compiler mit Android 2.3.3 mit und ohne onPrepareOptionsMenu zu kompilieren und auszuführen. Beide funktionieren, aber ich habe keinen Unterschied gesehen.

public boolean onCreateOptionsMenu(Menu menu){
//code here
}

public boolean onOptionsItemSelected(MenuItem item){
//code here
}

public boolean onPrepareOptionsMenu(Menu menu){
//code here
}

Was macht die onPrepareOptionsMenu-Methode eigentlich? Ist diese Methode wichtig? Könnte ich die Methode einfach löschen?


Zusatz

Oh, ich höre auch über Action Bar in Android 3.0, es heißt, Action Bar ist der alternative Weg für make Option Menu, und es verwendet onPrepareOptionsMenu. Ist das richtig?

Vielen Dank...

27
Tutompita

Werfen Sie einen Blick in die API :

Bereiten Sie das Standardmenü des Bildschirms für die Anzeige vor. Dies wird unmittelbar vor der Anzeige des Menüs jedes Mal aufgerufen. Mit dieser Methode können Sie Elemente effizient aktivieren/deaktivieren oder den Inhalt auf andere Weise dynamisch ändern.

39
Silox

Wenn Sie das Menü ändern möchten, bevor es dem Benutzer angezeigt wird, können Sie den entsprechenden Code in onPrepareOptionsMenu eingeben. Ich habe das dynamisch verwendet, um einige Menüoptionen unter bestimmten Umständen zu deaktivieren. 

Als Beispiel, wenn eine Menüoption deaktiviert werden soll, hatte ich eine App, bei der ein Ziel angegeben werden konnte. Eine meiner Menüoptionen bestand darin, eine Route zum Ziel zu berechnen. Wenn jedoch kein Ziel angegeben wurde, wurde diese Option nicht angewendet. Daher wurde die Menüoption mit onPrepareOptionsMenu deaktiviert, wenn sie nicht zutreffend war.

Ab Android 3.0 gibt es die ActionBar, eine Menüleiste. Die wichtigsten Elemente werden in der Aktionsleiste selbst angezeigt. Wenn jedoch nicht genügend Platz in der Aktionsleiste vorhanden ist, kommt es zu einem Überlauf. Es kann festgelegt werden, dass sich Menüelemente immer im Überlaufmenü und niemals in der Aktionsleiste befinden sollten. Bei einigen Geräten entspricht der Überlauf der Aktionsleiste der permanenten Menüschaltfläche auf dem Gerät, während bei anderen Geräten, die keine Menüschaltfläche haben, das Überlaufmenü rechts in der Aktionsleiste als drei vertikale Punkte angezeigt wird.

7
Stochastically

onCreateOptionsMenu wird einmal aufgerufen, wenn Ihre Aktivität zum ersten Mal erstellt wird. Wenn false zurückgegeben wird, wird kein Optionsmenü angezeigt und onPrepareOptionsMenu wird nie aufgerufen.

Wenn onCreateOptionsMenu true zurückgibt, wird onPrepareOptionsMenu auch aufgerufen, bevor die Aktivität angezeigt wird, und jedes Mal, wenn das Optionsmenü deaktiviert wird. Verwenden Sie onPrepareOptionsMenu, wenn Sie Elemente nach dem Erstellen aktivieren/deaktivieren, anzeigen/ausblenden oder hinzufügen/entfernen müssen.

Wenn sich Ihr Menü nicht ändert, verwenden Sie onCreateOptionsMenu.

1
Steven Spungin