Maison >Java >javaDidacticiel >Pourquoi mes fragments ne se remplacent-ils pas dans mon groupe d'activités Android ?

Pourquoi mes fragments ne se remplacent-ils pas dans mon groupe d'activités Android ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-25 06:20:15601parcourir

Why Aren't My Fragments Replacing Each Other in My Android Activity Group?

Remplacement de fragments dans des groupes d'activités

Remplacer des fragments dans un groupe d'activités peut être une tâche complexe si vous n'êtes pas familier avec le framework de fragmentation Android .

Le problème

Lors de la tentative de remplacement un fragment à l'intérieur d'un groupe d'activités avec un autre fragment, vous pouvez rencontrer une situation dans laquelle le code semble s'exécuter correctement, mais aucun changement visuel ne se produit. Cela peut être déroutant, car aucun message d'exception n'est affiché.

La solution

Le problème vient du fait que les fragments codés en dur en XML ne peuvent pas être remplacés. Au lieu de cela, les fragments doivent être ajoutés dynamiquement pour permettre le remplacement.

Pour ajouter et remplacer dynamiquement des fragments :

  1. Créez une mise en page ou un conteneur (par exemple, fragment_container) dans l'activité qui contiendra les fragments.
  2. Créez une nouvelle instance de fragment.
  3. Créez un FragmentTransaction à l'aide de getSupportFragmentManager().
  4. Utilisez transaction.replace() pour remplacer le fragment actuel dans fragment_container par le nouveau fragment.
  5. Ajoutez la transaction à la pile arrière à l'aide de transaction.addToBackStack(null ) si vous le souhaitez.
  6. Validez la transaction en utilisant transaction.commit().

Exemple de code

Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
transaction.commit();

Remarque :

  • Fragments qui sont ajoutés via la mise en page XML ne peuvent pas être remplacés.
  • Le R.id.fragment_container peut être n'importe quelle disposition ou conteneur approprié dans l'activité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn