Endlich rein onCreateView Methode, fügen Sie diese Zeile hinzu, damit die Optionen in Ihrer angezeigt werden Toolbar
setHasOptionsMenu(true);
Es wird nicht aufgerufen, wenn Sie diese Zeile nicht hinzufügen: setHasOptionsMenu(true);
– Yoann Hercouet
21. September 2013 um 10:01 Uhr
onCreateOptionsMenu() für Fragmente hat andere Argumente als für Aktivitäten.
– Jörg
23. Dezember 2013 um 13:34 Uhr
und auch ein anderer Rückgabetyp als void im Gegensatz zum booleschen Wert von onCreateOptionsMenu() in der Aktivität, wie oben erwähnt.
– Dexter
14. Juni 2014 um 7:35 Uhr
Interessanter Hinweis: Wenn Sie in Ihrer enthaltenden Aktivität auch onCreateOptionsMenu überschreiben, werden beide Optionen im Menü angezeigt.
– Adam Johns
4. März 2015 um 4:51 Uhr
setHasOptionsMenu(true); muss gerufen werden onCreate() vollständig sein.
– Roll
24. März 2015 um 12:48 Uhr
Alexander Färber
Sie haben bereits die automatisch generierte Datei res/menu/menu.xml definieren Aktionseinstellungen.
In deiner MainActivity.java habe folgende Methoden:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
// do stuff, like showing settings fragment
return true;
}
return super.onOptionsItemSelected(item); // important line
}
In dem onCreateView() Methode Ihres Fragment-Aufrufs:
setHasOptionsMenu(true);
und fügen Sie auch diese 2 Methoden hinzu:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragment_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_1:
// do stuff
return true;
case R.id.action_2:
// do more stuff
return true;
}
return false;
}
Fügen Sie abschließend die neue Datei hinzu res/menu/fragment_menu.xml definieren Aktion_1 und Aktion_2.
Wenn Ihre App das Fragment anzeigt, enthält das Menü auf diese Weise drei Einträge:
Aktion_1 aus res/menu/fragment_menu.xml
Aktion_2 aus res/menu/fragment_menu.xml
Aktionseinstellungen aus res/menu/menu.xml
Die Frage war in Fragmenten, nicht in Aktivität
– OlivierM
10. Februar 2016 um 5:28 Uhr
@OlivierM die Antwort erklärt das Fragmentmenü. Ich schätze die Erklärung, wie es mit dem Aktivitätsmenü interagiert.
– Aranda
28. Juni 2017 um 3:02 Uhr
Wie vermeide ich die Anzeige von “action_settings” in den Fragmentoptionen?
– roghayeh hosseini
12. Juli 2021 um 11:26 Uhr
Ich habe die Antworten von @Alexander Farber und @Sino Raj ausprobiert. Beide Antworten sind nett, aber ich konnte das onCreateOptionsMenu nicht in meinem Fragment verwenden, bis ich entdeckte, was fehlte:
Fügen Sie setSupportActionBar(toolbar) in meiner Aktivität wie folgt hinzu:
Set setHasMenuOptions(true) funktioniert, wenn die Anwendung ein Thema mit Actionbar hat, wie z Theme.MaterialComponents.DayNight.DarkActionBar oder Activity hat ansonsten eine eigene Symbolleiste onCreateOptionsMenu in fragment wird nicht aufgerufen.
Wenn Sie eigenständig verwenden möchten Toolbar Sie müssen entweder Aktivität abrufen und Ihre festlegen Toolbar als Stützaktionsleiste mit
Danke für das ‘setHasOptionsMenu(true);’, danach habe ich gesucht.
– Rudolf Real
5. Dezember 2014 um 18:37 Uhr