Was genau machen FragmentManager und FragmentTransaction?

Lesezeit: 4 Minuten

Was genau machen FragmentManager und FragmentTransaction
Alireza.Heidari

Ich habe unten einen einfachen Code

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

Was machen diese Codezeilen?

  • Ich bin überrascht, dass Sie eine Antwort gegeben haben. Soweit ich das beurteilen kann, sind die folgenden Erklärungen weit davon entfernt, diesen zweistufigen Prozess wirklich zu erklären.

    – SMBiggs

    13. Mai ’16 um 5:47

Was genau machen FragmentManager und FragmentTransaction
Zelldon

getFragmentManager()

Gibt den FragmentManager für die Interaktion mit Fragmenten zurück, die dieser Aktivität zugeordnet sind.

FragmentManager, der verwendet wird, um Transaktionen zum Hinzufügen, Entfernen oder Ersetzen von Fragmenten zu erstellen.

fragmentManager.beginTransaction();

Starten Sie eine Reihe von Bearbeitungsvorgängen für die Fragmente, die diesem FragmentManager zugeordnet sind.

Das zu verwendende FragmentTransaction-Objekt.

fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);

Ersetzt das aktuelle Fragment durch das mFeedFragment auf dem Layout mit der ID: R.id.fragment_container

fragmentTransaction.addToBackStack(null);

Fügen Sie diese Transaktion dem Backstack hinzu. Dies bedeutet, dass die Transaktion nach dem Commit gespeichert wird und ihre Operation rückgängig macht, wenn sie später vom Stack entfernt wird.

Nützlich für die Verwendung der Zurück-Schaltfläche, damit die Transaktion zurückgesetzt werden kann. Der Parametername:

Ist ein optionaler Name für diesen Backstack-Status oder null.

Weitere Informationen finden Sie in der anderen Frage Was bedeutet addToBackStack mit Null-Parameter?

Die Last-Anweisung schreibt die Transaktion fest und führt alle Befehle aus.

Weitere Hilfe finden Sie in der Google-Dokumentation:

http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html
http://developer.android.com/reference/android/app/FragmentManager.html
http://developer.android.com/reference/android/app/FragmentTransaction.html

Android FragmentManager

EIN FragmentManager verwaltet Fragments in Android verarbeitet es insbesondere Transaktionen zwischen Fragmenten. Eine Transaktion ist eine Möglichkeit, Fragmente hinzuzufügen, zu ersetzen oder zu entfernen.

Android FragmentTransaction

Wie schon gesagt a FragmentTransaction gibt uns Methoden zum Hinzufügen, Ersetzen oder Entfernen von Fragmenten in Android. Es gibt uns eine Schnittstelle für die Interaktion mit Fragmenten.


fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);

Die Methode replace(int containerViewId, Fragment fragment) ersetzt ein vorhandenes Fragment Objekt aus dem Container containerViewId und fügt das hinzu Fragment fragment

fragmentTransaction.addToBackStack(null);

Diese Methode, addToBackOfStack(String name), fügt diese Transaktion dem Backstack hinzu, dies kann verwendet werden, damit Fragments werden gespeichert und können von der . wieder verwendet werden Activity

fragmentTransaction.commit();

Die Methode commit() plant diese Transaktion, dies geschieht nicht sofort; Es ist im Haupt-Thread geplant, dass er ausgeführt wird, wenn der Thread bereit ist.

Bezug

  • Ja, wir alle wissen, WAS diese Kurse tun, aber WARUM? Warum die getrennten Klassen? Warum konnte der FragmentManager die Arbeit der FragmentTransaction nicht erledigen?

    – SMBiggs

    13. Mai ’16 um 5:46

  • @ScottBiggs Danke für die Frage dort. Ich habe mir diese Klassen genauer angesehen und glaube, dass es darum geht, ähnliche Funktionen zu trennen; FragmentTransacion befasst sich mit bestimmten Dingen, die mit einer ‘Transaktion’ zu tun haben, wie Animationen und Breadcrumbs. Ein anderer Gedanke, den ich hatte, war, dass dies hauptsächlich bei der zukünftigen Entwicklung helfen wird, da die Funktionalität innerhalb von Android wächst. Ich habe bemerkt, dass Sie ziemlich qualifiziert sind, ich frage mich, was Ihre Meinung dazu ist?

    – Grey

    13. Mai ’16 um 11:18

  • Sie haben wahrscheinlich Recht, aber wir versuchen, die Gedanken der Google-UI-Programmierer zu lesen, was ziemlich schwierig ist. Die Android-Programmierung begann als sehr schwierig und wurde mit jeder neuen Version komplexer. An dieser Stelle möchte ich einfach nur Einfachheit, auch wenn dies keine Abwärtskompatibilität mehr bedeutet.

    – SMBiggs

    16. Mai ’16 um 4:32


  • @ScottBiggs, ein weiterer Grund, warum die Logik von FragmentTransaction und FragmentManager in separaten Klassen implementiert werden könnte: in developer.android.com/reference/android/app/…, spricht die Dokumentation davon, dass der Breadcrumb-Titel für “wenn die Transaktion auf dem Backstack ist” geändert wird. Ich könnte hier im linken Feld sein, aber es wäre für mich sinnvoll, die Transaktionslogik zu trennen, wegen des Backstack. ?

    – Charles Thomas

    21. Mai ’16 um 21:36 Uhr

  • @CharlesThomas Sehr interessante Theorie. Aber da FragmentBreadCrumbs veraltet ist, bezweifle ich, dass dies der volle Grund ist. Es kann in der Tat etwas daran liegen, wie der Backstack gehandhabt wird. Bitte kommentieren Sie noch einmal, wenn Sie mehr erfahren.

    – SMBiggs

    23. Mai ’16 um 7:48

.

270430cookie-checkWas genau machen FragmentManager und FragmentTransaction?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy