Ich habe eine Symbolleiste sowie eine Navigationsleiste. Wenn ich meine App starte, werden die Symbolleiste und die Navigationsleiste erstellt. Wenn ich in der Navigationsleiste auf Elemente klicke, werden neue Fragmente gestartet und die gleiche Symbolleiste beibehalten. Wie füge ich der Symbolleiste grundsätzlich Menüelemente wie Suchen, Hinzufügen, Bearbeiten hinzu, wenn ich bestimmte Fragmente starte? Ich möchte sie nicht zu Beginn des Programms, sondern dynamisch erstellen. Wie könnte ich auf diese Schaltflächen klicken und sie andere Fragmente starten lassen? Ich möchte, dass in einem Fragment die Schaltfläche "Bearbeiten" in der Symbolleiste eine bestimmte Funktion ausführt, verglichen mit der Schaltfläche "Bearbeiten" in einem anderen Fragment. Vielen Dank!
Menu_toolbar:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/edit"
android:orderInCategory="1"
android:title="Edit"
app:showAsAction="always"
android:icon="@drawable/pencil_icon"/>
<item android:id="@+id/add"
android:orderInCategory="1"
android:title="Add"
app:showAsAction="always"
android:icon="@drawable/plus_icon"/>
Symbolleiste:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="#10a1ff"
android:title="Home"
/>
quelle
menu.clear()
inonCreateOptionsMenu
- sonst werden Sie das Menü aus dem übergeordneten erben, auch.So erstellen Sie ein Menü dynamisch: http://www.101apps.co.za/index.php/articles/using-toolbars-in-your-apps.html
Bearbeitet:
quelle
actionBarToolbar.setOnMenuItemClickListener()
diese Option, um Menüelementaktionen auszuführen.onOptionsItemSelected()
wird in dieser Situation nicht angerufen.Der beste Weg, es zu tun:
1. Suchen Sie die Symbolleiste in Aktivität und legen Sie sie als supportActionBar fest.
2. Dann ist es ein Kinderspiel, Optionsmenüs für verschiedene Fragmente in derselben Aktivität zu verwalten. Führen Sie in jedem Fragment die folgenden Schritte aus, wie Sie möchten:
Im OnCreateView-Methodenaufruf
Und zuletzt,
Und um Menüelemente zu verwalten, klicken Sie auf onOptionsItemSelected:
quelle
Überschreiben Sie die
onCreateOptionsMenu
Methode in jedem Fragment.quelle
setTitle()
kann Titel hinzufügen.Die einfachste Option ist zu tun
quelle
Ich habe dieses Problem richtig gelöst. Meine Lösung lautet wie folgt:
quelle
Ich hatte das gleiche Problem und wollte das Symbolleistenmenü entsprechend dem angezeigten Fragment ersetzen.
Das Problem, mit dem ich jetzt konfrontiert bin, ist, dass das Menü zum vorherigen hinzugefügt wird.
Um nur das Menü für das Fragment anzuzeigen, schlage ich vor:
Hoffe es wird helfen.
quelle
Im Folgenden finden Sie die Schritte zum Anzeigen verschiedener Menüoptionen mit unterschiedlichen Fragmenten.
Schritt 1: Rufen Sie setHasOptionsMenu (true) auf.
Schritt 2: Blasen Sie Ihre fragmentbezogenen Optionsmenüelemente auf.
quelle
Fügen Sie in XML diese Zeile hinzu
quelle
Mit der neuen MaterialToolbar ist es sehr einfach, ein Überlaufmenü zu erstellen und Folgendes zu verwenden:
und dann im Code zum Festlegen der OnCLick-Listener einfach Folgendes hinzufügen:
quelle