Angenommen, ich möchte das aktuelle Fragment in einer Containeransicht durch ein anderes ersetzen. Ist es besser zu ersetzen ...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, newFragment, null);
ft.commit();
... oder folgendes mit Ein- und Ausblenden?
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.hide(oldFragment);
ft.show(newFragment);
ft.commit();
Ist eine Möglichkeit, dies effizienter zu machen? Es gibt nicht viele Informationen darüber, wann diese Methoden verwendet werden sollen oder wie sie sich auf den Lebenszyklus der beteiligten Fragmente auswirken. Vielen Dank!
android
android-fragments
Robert Karl
quelle
quelle
Antworten:
Sie sollten überlegen, was Sie mit dem Fragment tun möchten, um zu entscheiden, welchem Pfad Sie folgen möchten. Wenn Sie eine FragmentTransaction verwenden, um das Fragment auszublenden, befindet es sich möglicherweise noch im laufenden Zustand seines Lebenszyklus, aber seine Benutzeroberfläche wurde vom Fenster getrennt, sodass es nicht mehr sichtbar ist. Sie können also technisch immer noch mit dem Fragment interagieren und die Benutzeroberfläche später erneut anbringen. Wenn Sie das Fragment ersetzen, ziehen Sie es tatsächlich aus dem Container und es durchläuft alle Teardown-Ereignisse im Lebenszyklus (onPause, onStop usw.). Wenn Sie dieses Fragment aus irgendeinem Grund erneut benötigen, müssen Sie es erneut ausführen Setzen Sie es wieder in den Container ein und lassen Sie es erneut durchlaufen.
Wenn die Wahrscheinlichkeit groß ist, dass Sie dieses Fragment erneut benötigen, blenden Sie es einfach aus, da das Neuzeichnen des Layouts kostengünstiger ist als das vollständige Neuinitialisieren.
quelle
hide()
undshow()
sparen! Danke dafür!Sie haben sich im Grunde selbst geantwortet. Wenn Sie ersetzen möchten (so dass altes Fragment nicht mehr benötigt wird), verwenden
replace()
Sie, wenn Sie es vorübergehend ausblenden möchten, dann tun Sie dieshide()
.quelle
Ich habe die Hide / Show-Methode in meiner Aktivität mit 4 Fragmenten verwendet. Sie hat meine Lösung gelöst, aber einige Zeit nach dem Zufallsprinzip, wenn ich meinen Dialog zeige, gibt es eine Ausnahme für fehlerhafte Token, wenn ich die Methode zum Hinzufügen und Ersetzen verwende. Dann tritt keine fehlerhafte Token-Ausnahme auf, also denke ich, dass show / Die Versteckmethode ist nicht perfekt
quelle