Ich interessiere mich für die beste Möglichkeit, eine einzelne Aktivität zu haben, die zwischen zwei Fragmenten wechselt.Der beste Weg, um zwischen zwei Fragmenten zu wechseln
Ich habe wahrscheinlich 15 Stack Overflow Beiträge und 5 Blogs Beiträge gelesen, wie man das macht, und, während ich denke, dass ich eine Lösung zusammengeschustert habe, bin ich nicht überzeugt, dass es die beste ist. Daher möchte ich die Meinungen der Menschen über den richtigen Umgang damit hören, insbesondere in Bezug auf den Lebenszyklus der Elternaktivität und der Fragmente. Hier
ist die Situation im Detail:
- Eine Mutter Aktivität, die eine von zwei möglichen Fragmenten anzeigen kann.
- Die beiden Fragmente haben einen Zustand, den ich über eine Sitzung hinweg beibehalten möchte, der jedoch nicht unbedingt zwischen Sitzungen bestehen muss.
- Eine Reihe anderer Aktivitäten, so dass die Elternaktivität und die Fragmente im Backstack vergraben und wegen zu wenig Arbeitsspeichers zerstört werden können.
- Ich möchte die Möglichkeit, die Zurück-Taste verwenden, um zwischen den Fragmenten zu bewegen (So wie ich es verstehe, kann ich nicht setRetainInstance verwenden).
Neben allgemeiner Architektur Beratung, ich habe die folgenden noch offene Fragen: werden
- Wenn die übergeordnete Aktivität aufgrund des geringen Speichers zerstört wird, wie kann ich garantieren, dass die Zustände beider Fragmente beibehalten werden , gemäß diesem Beitrag: When a Fragment is replaced and put in the back stack (or removed) does it stay in memory?. Brauche ich nur einen Zeiger auf jedes Fragment in der übergeordneten Aktivität?
- Wie kann die übergeordnete Aktivität am besten verfolgen, welches Fragment gerade angezeigt wird?
Vielen Dank im Voraus!
Danke für die Antwort. Ich glaube nicht, dass ich hier einen View Pager verwenden kann, da die Views nicht zwischengespielt werden sollten. Ich werde jedoch auf jeden Fall parzellierbar implementieren. Wo implementiere ich onBackPressed? – GLee
OnBackPressed ist eine Methode einer Aktivität. Sie müssen es also dort überschreiben. –