Android: Wann wird onCreateOptionsMenu während des Aktivitätslebenszyklus aufgerufen?

Ich habe ein paar Breakpoints in onCreate (eine am Anfang und eine am Ende der Methode), und ich habe auch eine zu Beginn von onCreateOptionsMenu . Die onCreate Methode wird zuerst aufgerufen und bevor es beendet onCreateOptionsMenu wird aufgerufen.

Ich versuche, den Fragment Navigationscode in meiner App zu trennen, also habe ich ein paar Objekte, die ich delegate onCreateOptionsMenu je nachdem, ob die App auf Telefon / Tablet läuft (ich benutze Bildschirmgröße, um dies zu bestimmen, mein Layout Datei für große Bildschirme hat eine Ansicht, die ich überprüfe, nachdem das Layout aufgeblasen ist). Das Problem, das ich habe, ist, ich schaffe diese Objekte in onCreate, und ich bekomme eine Null-Pointer-Ausnahme, wenn ich das Objekt in onCreateOptionsMenu .

  • Firebase Android: Griff tiefe Links
  • Wie aktualisiere ich ein TextView beim Looping in Android?
  • Ist es möglich, einen Rundfunkempfänger als innere Klasse in Manifestdatei zu definieren?
  • Einen Blick auf die Vorderansicht machen
  • CollapsingToolbarLayout-Titel als gemeinsamer Elementübergang
  • Wie bekomme ich Hintergrundfarbe des Knopfes auf Android?
  • Nachdem die App stundenlang im Leerlauf war, stürzt es aufResume ab, da Ressourcen fehlen. Wie kann ich über onTrimMemory lösen?
  • Android scrollview mit videoview gibt Problem
  • Weird Fehler bei der Installation von Android App?
  • CursorLoader für mehrere ContentProvider
  • So planen Sie eine Aufgabe mit Alarm Manager
  • Wie man Werte zwischen Fragmenten übergibt
  • 6 Solutions collect form web for “Android: Wann wird onCreateOptionsMenu während des Aktivitätslebenszyklus aufgerufen?”

    Die onCreate-Methode wird zuerst aufgerufen und bevor es beendet istCreateOptionsMenu wird aufgerufen.

    Das gilt für Geräte und Apps mit einer offiziellen Honeycomb-Aktionsleiste. Wenn es keine onCreateOptionsMenu() gibt, sollte onCreateOptionsMenu() nicht aufgerufen werden, bis der Benutzer das Menü aufruft, in der Regel durch Drücken der MENU-Taste.

    (Ich bin mit Bildschirmgröße, um dies zu bestimmen, meine Layout-Datei für große Bildschirme hat eine Ansicht Ich überprüfe, nachdem das Layout aufgeblasen ist)

    Dieser Test wird in Kürze brechen, sobald Eiscreme Sandwich Schiffe. Von dem, was ich sagen kann, haben ICS-Telefone Aktionsleisten (wenn auch nicht System-Bars).

    In meinem Fall auf Android 2.3 und mit FragmentActivity aus der v4-Support-Bibliothek folgt die Reihenfolge der Lebenszyklusmethoden:

     07-18 18:29:21.629 20183-20183/? I/onCreate: 07-18 18:29:21.719 20183-20183/? I/onStart: 07-18 18:29:21.719 20183-20183/? I/onResume: 07-18 18:29:21.739 20183-20183/? I/onCreateOptionsMenu: 

    Hinzufügen in oben Antwort, Im Falle von ICS und Honeycomb onCreateOptionsMenu wird nach onCreate und onPostCreate aufgerufen, während in Lebkuchen und früheren Versionen es nach onCreate aufgerufen wird, aber vor onPostCreate. Das ist der einzige Unterschied, den ich gefunden habe.

    Ich habe gefunden, ob in onResume () ich anrufe

     invalidateOptionsMenu(); 

    Dann wird onCreateOptionsMenu (Menümenü) nachher – nach dem Aktivitätslebenszyklus (ich denke das ist der richtige Begriff hier) , wie von @ tir38 angezeigt

    Ich schlage vor, eine Callback-Funktion in deinem Fragment zu erstellen, um Timing-Probleme mit onResume () und onCreateOptionsMenu () zu vermeiden.

    Die folgenden Arbeiten sind für mich einwandfrei:

    1. Erstellen und füge dein Fragment deiner Aktivität hinzu
    2. Lassen Sie einen Verweis auf dieses Fragment in Ihrer Tätigkeit
    3. Erstellen Sie eine öffentliche Methode doSomethingWithTheMenu () in Ihrem Fragment
    4. Rufen Sie diese Methode aus Ihrer Aktivität auf, wenn onCreateOptionsMenu (Menümenü) aufgerufen wird.

    Beispiel:

     @Override public boolean onCreateOptionsMenu(Menu menu) { if (this.myFragment != null) { this.myFragment.doSomethingWithTheMenu(menu); } return true; } 

    In meiner Erfahrung ActionBarActivity von Unterstützung v7 onCreateOptionsMenu aufgerufen in setContentView (); Methode. In der Mitte von onCreate () erscheint es auf 4.1.1. Aber auf 4.4 eine andere Geschichte onCreateOptionMenu rief nach onCreate (). Auch ich weiß nicht, dass es sofort nachher sein kann. Aber ist die Tatsache nach. Ich habe nicht auf andere Versionen getestet, aber 4.1.1 ist der erste, wo ich hatte eine Mühe mit init bestellen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.