Sobes.tech
Junior

Comment peut-on implémenter des fragments dans une Activity?

sobes.tech IA

Réponse de l'IA

Dans les fragments d'Activity, ils peuvent être implémentés de manière déclarative en XML ou programmatiquement à l'aide de FragmentManager.

De manière déclarative (en XML):

<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment" // Nom complet de la classe du fragment
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • Le fragment est ajouté lors de la création de l'Activity.
  • Facile à utiliser pour des mises en page statiques.
  • Moins flexible pour des opérations dynamiques.

Programmatique (avec FragmentManager):

// Dans une méthode de l'Activity, par exemple, onCreate ou lors d'un événement
val fragmentManager = supportFragmentManager // Pour AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()

// Ajouter un fragment
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)

// Remplacer un fragment (supprime celui existant dans le conteneur et en ajoute un nouveau)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)

// Supprimer un fragment
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// si (fragmentToRemove != null) {
//     fragmentTransaction.remove(fragmentToRemove)
// }

// Ajouter à la pile arrière (permet à l'utilisateur de revenir au fragment précédent avec le bouton "Retour")
fragmentTransaction.addToBackStack(null) // Chaîne d'étiquette pour la pile arrière (peut être null)

// Finaliser la transaction
fragmentTransaction.commit() // Exécution asynchrone
// ou
// fragmentTransaction.commitNow() // Exécution synchrone
  • FragmentManager est utilisé pour gérer les fragments.
  • FragmentTransaction est utilisé pour effectuer des opérations (ajouter, supprimer, remplacer, etc.).
  • Offre une plus grande flexibilité pour modifier dynamiquement l'UI à l'exécution.
  • La gestion de la pile arrière permet la navigation.

Utilisation du conteneur:

Pour ajouter ou remplacer des fragments de manière programmatique, on utilise généralement un conteneur dans la mise en page XML de l'Activity, comme FrameLayout ou LinearLayout:

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Ensuite, dans le code de l'Activity, le fragment est ajouté ou remplacé à l'intérieur de ce conteneur.

Aspects importants:

  • Le cycle de vie du fragment est étroitement lié à celui de l'Activity.
  • Le FragmentManager gère le cycle de vie et l'état des fragments.
  • La transaction de fragments est effectuée de manière atomique (soit toute l'opération, soit aucune).
  • Lors de l'utilisation de la pile arrière, il faut appeler addToBackStack().
  • Pour travailler avec des fragments dans AppCompatActivity, utilisez supportFragmentManager.