Skip to content

différence entre fragmentTransaction.add et fragmentTransaction.replace

Solution:

Vous pouvez ajouter plusieurs fragments à un conteneur et ils seront superposés les uns sur les autres. Si vos fragments ont des arrière-plans transparents, vous verrez cet effet et pourrez interagir avec les multiples fragments en même temps.

C’est ce qui se passera si vous utilisez FragmentTransaction.add sur un conteneur. Votre fragment ajouté sera placé au-dessus de votre fragment existant.

Si tu utilises FragmentTransaction.replace(R.id.container,fragment) il supprimera tous les fragments déjà présents dans le conteneur et ajoutera votre nouveau dans le même conteneur.

Vous pouvez également utiliser la méthode add sans identifiant de conteneur et votre fragment sera simplement ajouté à la liste des fragments dans le FragmentManager et vous pourrez les rappeler à tout moment par leur valeur de balise.

Vous pouvez toujours revenir à une configuration précédente SI vous avez ajouté la transaction à la pile arrière. Vous pouvez le faire même si une opération précédente a supprimé un fragment. Le fragment supprimé est mémorisé dans la transaction et faire éclater la pile arrière le ramène.

Deux choix

Disons que vous avez un conteneur de fragments.
Et, votre tâche consiste à ajouter un fragment dans le conteneur.

Vous pouvez le faire en appelant l’une des méthodes suivantes

1) add(containerId,fragment)

2) replace(containerId,fragment)

Mais les deux méthodes diffèrent dans le comportement !!!

entrez la description de l'image ici
Bien que les deux méthodes ajouteront votre fragment dans le conteneur de fragments, leurs entrailles (fonctionnement interne) diffèrent en fonction des deux possibles États du conteneur de fragments.
Lorsque le conteneur de fragments
1) ne contient aucun fragment.
2) ont déjà un ou plusieurs fragments attachés.

Voyons ce qui se passe lorsque nous appelons add() et replace() méthode.

Cas 1 : Lorsqu’il n’y a pas de fragment attaché dans un conteneur

Dans ce cas, les deux méthodes ajouteront le fragment au conteneur. Ils produiront donc même effet.

Cas 2 : Lorsque le fragmentContainer a déjà un ou plusieurs fragments

add(): ajoute le nouveau fragment sur le dessus un autre fragment
replace(): supprime tout puis ajoute le nouveau fragment

Exemple

Supposons donc que le conteneur Fragment a fragments[A->B->C].
Maintenant, vous voulez ajouter un nouveau fragment D.
add() le résultat de la méthode sera [A->B->C->D]
replace() le résultat de la méthode sera [D]

Lien pertinent :

Consultez ce projet de démonstration pour une meilleure compréhension.



Articles Similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.