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
FragmentManagerest utilisé pour gérer les fragments.FragmentTransactionest 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
FragmentManagergè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.