2016-05-30 9 views
1

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.

  1. (A) -Fragment ist formFragmet mit EditText, CheckBox, Spinner, Datum und Zeitfelder. Es hat die Aktion in der ToolBar, die diese Felder aktualisiert, wenn ein Benutzer etwas in ihnen ändert.
  2. (B) Fragment ist ein ListFragment, und es hat die Liste der Datensätze - es muss keine Aktionen in der ToolBar 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 im ToolBar, aber wenn ein FormFragment (A) in dem aktuellen Registerkarte ist es zeigt die Aktionen für diese FormFragment, 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.

Antwort

0

Die Antwort auf dieses Problem ist: Verwenden Sie den getChildFragmentManager() in TabbedPagerAdapter.

Ich habe getSupportFragmentManager() der Aktivität verwendet, was falsch ist, wenn Sie NESTED-Fragmente wie in TabbedFragment verwenden, die einen ViewPager haben, und ein ViewPager hat (Kind-) Fragmente im Inneren.