Ich habe neulich angefangen, Android-Apps zu entwickeln, und während ich studierte, während ich mir den Text ansah, Ich hatte eine Frage zur Verwendung der addToBackStack-Methode, daher schreibe ich sie auf.
Wenn die Artikelliste ausgewählt ist, wechselt der Bildschirm als Betrieb der Anwendung zum Bildschirm mit den ausgewählten Artikeldetails. Wenn Sie die Zurück-Taste drücken, kehren Sie zur Liste zurück.
Verwenden Sie die addToBackStack-Methode, um den Status des Rückgabeziels zu speichern. Die im Text beschriebene Verwendung von addToBackStack ist wie folgt.
//Liste im Detail ersetzen
fragmentTransaction.replace(R.id.fragment1,myFragment2);
//Speichern Sie die ursprüngliche Transaktion zur Verarbeitung, wenn Sie die Zurück-Taste drücken
fragmentTransaction.addToBackStack(null);
Die folgenden zwei Punkte haben mich gefragt, wann ich diesen Code gesehen habe.
Der Inhalt der Untersuchung zu den beiden oben genannten Punkten ist nachstehend zusammengefasst.
Mit Blick auf den obigen Code, Nach dem Ersetzen des Fragments durch die fragmentTransaction.replace-Methode Der Status wird durch die Methode fragmentTransaction.addToBackStack gespeichert.
Die Frage hier ist Die Frage ist, dass Sie beim Speichern nach dem Austausch möglicherweise den Status des Rückgabeziels nicht speichern können. Mit anderen Worten Fragmentersatz ⇒ speichern nicht, Speichern ⇒ Fragment ersetzen Ich dachte es sollte sein.
Wenn Sie sich also die Beschreibung von addToBackStack in Android-Entwicklern ansehen,
Add this transaction to the back stack. This means that the transaction will be remembered after it is committed, and will reverse its operation when later popped off the stack.
Grob übersetzt, Speichern Sie die Transaktion auf dem Stapel. Es wird nach dem Festschreiben auf dem Stapel aufgezeichnet. Es wird wiederhergestellt, wenn es vom Stapel genommen wird.
Leider habe ich die Antwort nicht bekommen. Danach suchte ich nach Blogs usw., bekam aber keine klare Antwort. Danach, als ich untersuchte, das Bildschirmlayout auf Tablets und Smartphones zu ändern, Ich habe die Antwort gefunden. Auf der Fragmentbeschreibungsseite (https://developer.android.com/guide/components/fragments.html?hl=ja) Ich habe die folgende Beschreibung gefunden.
Wenn Sie mehrere Änderungen an einer Transaktion vornehmen (z. B. add () oder remove ()) und addToBackStack () aufrufen, werden alle vor dem Aufruf von commit () vorgenommenen Änderungen als eine Transaktion in den Backstack übernommen. Wählen Sie nach dem Hinzufügen die Schaltfläche Zurück, und alles wird gleichzeitig wieder angezeigt.
Mit anderen Worten, die addToBackStack-Methode speichert die Unterschiede. Wenn Sie die Differenz speichern möchten, ersetzen Sie Fragment ⇒ Speichern.
Dies ist einfach die Frage: "Was bedeutet es, ein NULL-Argument zu haben?"
Diese Frage wird von Android-Note erklärt (http://android-note.open-memo.net/sub/fragment__fragment_stack.html) Es gab die folgende Beschreibung in.
Wenn Sie nicht mehrere Fragmente auf dem Stapel speichern möchten und nur das aktuelle speichern möchten, übergeben Sie null wie folgt:
Das war's.
das ist alles.
Repository https://github.com/tagfa/MyGUIFragmentDynamic02 Wo wird die addToBackStack-Methode verwendet? https://github.com/tagfa/MyGUIFragmentDynamic02/blob/master/app/src/main/java/com/example/tag/myguifragmentdynamic02/MainActivity.java
Recommended Posts