Meine Anwendung verfügt über eine Aktivität und drei Arten von Fragmenten.So trennen Sie die Symbolleiste Aktion von Fragment Android
MainActivity
hat die ToolBar
und Fragmente fügen ihre eigenen Handlungen in diese ToolBar
- so Fragmente ToolBar
nicht ihre eigenen.
- (A) -Fragment ist
formFragmet
mitEditText
,CheckBox
,Spinner
, Datum und Zeitfelder. Es hat die Aktion in derToolBar
, die diese Felder aktualisiert, wenn ein Benutzer etwas in ihnen ändert. - (B) Fragment ist ein
ListFragment
, und es hat die Liste der Datensätze - es muss keine Aktionen in derToolBar
haben. Das Fragment (C) ist ein mit einem Tab versehenes Fragment, das sowohl (A) Fragment als auch (B) Fragment oder eine beliebige andere Kombination in den Registern (ViewPager
) enthalten kann.TabbedFragment
benötigt keine Aktion imToolBar
, aber wenn einFormFragment
(A) in dem aktuellen Registerkarte ist es zeigt die Aktionen für dieseFormFragment
, so ist es in Ordnung, und es funktioniert gut.
Problem ist folgende:
Wenn ein Benutzer einen Datensatz aus dem nächsten Bild wird FormFragment
(A) ListFragment
(B) auswählt, und der Benutzer die Werte in Feldern ändert. Danach wählt der Benutzer eine Aktion aus ToolBar
(update) und das Formular wird aktualisiert.
Nach erfolgreichem Update Benutzer geht dann zurück (berührt den Pfeil in den ToolBar
durch die Aktivität hinzugefügt es BackStack
erscheint, und zeigt ListFragment
) zu ListFragment
(B) und Benutzer wählt ein anderes Element in der Liste. Ein anderes (neues) FormFragment
öffnet sich mit anderen Daten in Feldern.
Benutzer ändert etwas in diesem Formular und drückt Update-Aktion in der Symbolleiste.
Änderung wird NICHT gespeichert! Der Grund ist, dass die Aktion von ToolBar
in diesem (neuen) formFragment
immer noch an den PREVIOUS FormFragment
angehängt ist ???
Hat jemand dieses Problem ???
Gibt es eine Möglichkeit, die Aktion irgendwie vom Fragment zu lösen?
Ich vermutete, dass das Android die neue Aktion in der Symbolleiste auf das neue Fragment festlegen würde, wenn es erstellt wird. Aber das tut es offensichtlich nicht.
Bitte wenn jemand helfen könnte.
P.S. Ich werde bei Bedarf einige Teile des Codes bereitstellen.
Vielen Dank im Voraus.