Quelle est la signification de addToBackStack avec le paramètre null?

J’ai un code client. Il n’y a qu’une seule activité pour tous les fragments, c’est-à-dire que l’activité unique gère tous les fragments.

Cette activité contient le code suivant pour tout fragment à la fin de la méthode de ce fragment.

Par exemple – fragment MoreFragment:

MoreFragment firstFragment = new MoreFragment(); getSupportFragmentManager().beginTransaction() .replace(R.id.article_fragment, firstFragment) .addToBackStack(null).commit(); 

Alors,

1) Quelle est la signification de addToBackStack(null) suivi d’un commit() ?

2) Pourquoi faut-il passer un paramètre null à addToBackStack ?

3) Comment obtenir ce fragment après avoir été ajouté comme ça?

On dirait que ce code est inutile car j’ai exécuté le code sans la dernière ligne .addToBackStack(null).commit() et il a fonctionné sans aucun problème.

Que signifie addToBackStack (null) suivi d’un commit ()?

Citations de documents

En appelant addToBackStack (), la transaction de remplacement est enregistrée dans la stack de retour afin que l’utilisateur puisse inverser la transaction et ramener le fragment précédent en appuyant sur le bouton Précédent.

Si vous ajoutez plusieurs modifications à la transaction (telles que add () ou remove ()) et appelez addToBackStack (), toutes les modifications appliquées avant d’appeler commit () sont ajoutées à la stack arrière en tant que transaction unique et le bouton Précédent les inversera tous ensemble.

L’ordre dans lequel vous ajoutez des modifications à une transaction de fragmentation importe peu, sauf:

Vous devez appeler commit() last Si vous ajoutez plusieurs fragments au même conteneur, l’ordre dans lequel vous les ajoutez détermine l’ordre dans lequel ils apparaissent dans la hiérarchie des vues.

Donc, vous vous êtes engagé à la fin.

Pourquoi devez-vous passer un paramètre null à addToBackStack?

Ce n’est pas forcément nul, cela peut être une chaîne. Si vous ne voulez pas simplement passer null

Résumé public FragmentTransaction addToBackStack (Nom de la chaîne)

Ajout au niveau de l’API 11 Ajoutez cette transaction à la stack arrière. Cela signifie que la transaction sera mémorisée une fois qu’elle aura été validée et qu’elle renversera son opération lors de la sortie de la stack.

Paramètres name Nom facultatif pour cet état de stack arrière, ou null.

Concernant:

On dirait que ce code est inutile car j’ai exécuté le code sans la dernière ligne .addToBackStack (null) .commit () et il a fonctionné sans aucun problème

Si vous souhaitez accéder au fragment précédent, ajoutez-le à backstack. Donc, cela dépend si vous voulez append le fragment à l’arrière-plan.

Comment obtenir ce fragment après avoir été ajouté comme ça?

Vous avez déjà le premier fragment instanceFragment. Donc, je ne sais pas ce que vous entendez par obtenir le fragment plus tard

Plus d’information @

http://developer.android.com/guide/components/fragments.html

http://developer.android.com/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.Ssortingng)

Vos réponses sont obsolètes. Si vous ne souhaitez pas append de fragments à la stack arrière, utilisez l’extrait de code ci-dessous:

  public static void replaceFragment (@NonNull FragmentManager fragmentManager, @NonNull Fragment fragment,int frameId){ checkNotNull(fragmentManager); checkNotNull(fragment); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(frameId, fragment); transaction.disallowAddToBackStack(); // <-- This makes magic! transaction.commit(); } 

Ci-dessous, vous avez un exemple mignon comment l'utiliser:

 GameFragment fragment = GameFragment.newInstance(mGameObject, currentQuestion); ActivityUtils.replaceFragment(getFragmentManager(), fragment, R.id.main);