2013-05-26 9 views
25

Ich möchte Option Menu für Android machen, ich besuche diese Seite. In ihrem Skript habe ich onPrepareOptionsMenu gefunden, ich versuche, mit Android 2.3.3 Compiler mit und ohne onPrepareOptionsMenu zu kompilieren und zu laufen, beides funktioniert, aber ich habe keinen Unterschied gesehen.Was onPrepareOptionsMenu tun?

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

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

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

Was ist eigentlich onPrepareOptionsMenu Methode tun? Ist diese Methode wichtig? Kann ich die Methode einfach löschen?


Addition

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

Danke ...

+0

Lesen Sie bitte einfach doc bitte. Es wurde dafür geschaffen. Wenn Sie einen bestimmten Punkt dessen nicht verstehen, was es tut, fragen Sie es dann. http://developer.android.com/reference/android/app/Activity.html#onPrepareOptionsMenu(android.view.Menu) –

+0

@ZouZou: Entschuldigung, ich bin neu bei Android, ich weiß nicht, dass es ein Dokument gab bis du es mir sagst. Vielen Dank. – Tutompita

+1

Es wird aufgerufen, wenn der Benutzer die Menüschaltfläche drückt (physisch oder in der Aktionsleiste). –

Antwort

35

Werfen Sie einen Blick in die API:

die Standard-Optionen-Menü-Bildschirm vorbereiten angezeigt werden. Dies wird direkt vor der Anzeige des Menüs aufgerufen, jedes Mal wenn es angezeigt wird. Sie können diese Methode verwenden, um Elemente effizient zu aktivieren/deaktivieren oder den Inhalt anderweitig dynamisch zu ändern.

+1

Danke !! Die Wörter "den Inhalt dynamisch ändern" erklären alles !! – Tutompita

+0

@Tutompita Wenn diese Antwort Ihnen genügt, können Sie sie als korrekt markieren. – Silox

+0

Es wäre besser, wenn der Inhalt dynamisch geändert werden könnte. Beispiel: – Killer

7

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 für eine Möglichkeit, eine Menüoption zu deaktivieren, hatte ich eine App, in 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 habe ich onPrepareOptionsMenu verwendet, um diese Menüoption zu deaktivieren, wenn sie nicht anwendbar war.

Ab Android 3.0 und höher gibt es die ActionBar, eine Menüleiste. Die wichtigsten Elemente gehen in die ActionBar selbst, aber es gibt einen Überlauf, wenn auf der Aktionsleiste nicht genug Platz ist. Man kann angeben, dass Menüpunkte immer im Überlaufmenü und niemals in der Aktionsleiste selbst sein sollten. Bei einigen Geräten entspricht der Überlauf der Aktionsleiste dem permanenten Menüknopf auf dem Gerät, während bei anderen Geräten, die keine Menüschaltfläche haben, das Überlaufmenü auf der rechten Seite der Aktionsleiste als drei vertikale Punkte zu sehen ist.

+0

Warum würden Sie die Menüoption deaktivieren? Könnte beispielsweise den Fall angeben, in dem wir die Menüoption deaktivieren müssen? – Tutompita

+1

Ich habe ein Beispiel gegeben. Wenn diese Antwort Ihnen genügt, können Sie sie als richtig markieren und/oder als nützlich markieren. – Stochastically

+0

Danke für das Beispiel, das Sie gegeben haben, es gibt mir eine andere Idee dieser Methode. Ich habe ein Apps mit den drei vertikalen Punkten gesehen, aber es läuft in meinem 2.3.4 Android. Wie sie es schaffen? – Tutompita

0

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

Wenn onCreateOptionsMenu den Wert true zurückgibt, wird onPrepareOptionsMenu auch vor der Anzeige der Aktivität aufgerufen, und auch jedes Mal, wenn das Optionsmenü ungültig wird. Verwenden Sie onPrepareOptionsMenu, wenn Sie Elemente nach dem Erstellen aktivieren/deaktivieren, anzeigen/verbergen oder hinzufügen/entfernen möchten.

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