Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Un Fragment représente une partie réutilisable de l'UI de votre application. Un fragment définit et gère sa propre mise en page, a son propre cycle de vie et peut gérer ses propres événements d'entrée. Les fragments ne peuvent pas être autonomes. Ils doivent être hébergés par une activité ou un autre fragment. La hiérarchie des vues du fragment fait partie de la hiérarchie des vues de l'hôte. On dit aussi qu'elle s'y associe.
Modularité
Les fragments, qui vous permettent de diviser l'interface utilisateur de votre activité en éléments distincts, assurent la modularité et la réutilisation. Les activités sont le réceptacle idéal des éléments globaux liés à l'interface utilisateur de votre application, tels qu'un panneau de navigation. À l'inverse, les fragments conviennent davantage à la définition et à la gestion de l'interface utilisateur d'un seul écran ou d'une partie de l'écran.
Prenons l'exemple d'une application qui réagit à différentes tailles d'écran. Sur les grands écrans, vous souhaiterez peut-être qu'elle affiche un panneau de navigation statique et une liste sous forme de grille. Sur les écrans de petite taille, vous préférerez peut-être qu'elle affiche une barre de navigation inférieure et une liste linéaire.
Il est difficile de gérer ces variantes dans l'activité. Toutefois, la séparation des éléments de navigation du contenu facilite ce processus. L'activité se charge ensuite d'afficher l'UI de navigation appropriée, tandis que le fragment affiche la liste avec la mise en page adéquate.
Figure 1. Deux versions du même écran sur différentes tailles d'écran. Sur la gauche, un grand écran contient un panneau de navigation contrôlé par l'activité et une liste sous forme de grille contrôlée par le fragment. Sur la droite, un petit écran contient une barre de navigation inférieure contrôlée par l'activité et une liste linéaire contrôlée par le fragment.
La division de l'UI en fragments facilite la modification de l'apparence de votre activité au moment de l'exécution. Lorsque votre activité est à l'état de cycle de vieSTARTED ou à un niveau supérieur, des fragments peuvent être ajoutés, remplacés ou supprimés. Vous pouvez également conserver un enregistrement de ces modifications dans une pile "Retour" gérée par l'activité, de sorte que les modifications puissent être annulées.
Vous pouvez utiliser plusieurs instances de la même classe de fragment dans la même activité, dans plusieurs activités ou même en tant qu'enfant d'un autre fragment. Toutefois, ne fournissez un fragment qu'avec la logique nécessaire pour gérer sa propre interface utilisateur. Évitez de dépendre d'un fragment ou de le manipuler pour en créer un autre.
Étapes suivantes
Pour plus de documentation et de ressources sur les fragments, consultez les sections suivantes.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Fragments\n\nA [`Fragment`](/reference/androidx/fragment/app/Fragment) represents a\nreusable portion of your app's UI. A fragment defines and manages its own\nlayout, has its own lifecycle, and can handle its own input events. Fragments\ncan't live on their own. They must be *hosted* by an activity or another\nfragment. The fragment's view hierarchy becomes part of, or *attaches to*,\nthe host's view hierarchy.\n| **Note:** Some [Android Jetpack](/jetpack/androidx/versions) libraries, such as [Navigation](/guide/navigation), [`BottomNavigationView`](/reference/com/google/android/material/bottomnavigation/BottomNavigationView), and [`ViewPager2`](/jetpack/androidx/releases/viewpager2), are designed to work with fragments.\n\nModularity\n----------\n\nFragments introduce modularity and reusability into your activity's UI by\nletting you divide the UI into discrete chunks. Activities are an ideal\nplace to put global elements around your app's user interface, such as a\nnavigation drawer. Conversely, fragments are better suited to define and\nmanage the UI of a single screen or portion of a screen.\n\nConsider an app that responds to various screen sizes. On larger screens, you\nmight want the app to display a static navigation drawer and a list in a grid\nlayout. On smaller screens, you might want the app to display a bottom\nnavigation bar and a list in a linear layout.\n\nManaging these variations in the activity is\nunwieldy. Separating the navigation elements from the content can make this\nprocess more manageable. The activity is then responsible for displaying\nthe correct navigation UI, while the fragment displays the list with the proper\nlayout.\n**Figure 1.** Two versions of the same screen on different screen sizes. On the left, a large screen contains a navigation drawer that is controlled by the activity and a grid list that is controlled by the fragment. On the right, a small screen contains a bottom navigation bar that is controlled by the activity and a linear list that is controlled by the fragment.\n\nDividing your UI into fragments makes it easier to modify your activity's\nappearance at runtime. While your activity is in the `STARTED`\n[lifecycle state](/guide/components/activities/activity-lifecycle) or\nhigher, fragments can be added, replaced, or removed. And you can keep a record\nof these changes in a back stack that is managed by the activity, so that\nthe changes can be reversed.\n\nYou can use multiple instances of the same fragment class within the\nsame activity, in multiple activities, or even as a child of another\nfragment. With this in mind, only provide a fragment with\nthe logic necessary to manage its own UI. Avoid depending on or\nmanipulating one fragment from another.\n\nNext steps\n----------\n\nFor more documentation and resources related to fragments, see the following.\n\n### Getting Started\n\n- [Create a fragment](/guide/fragments/create)\n\n### Further topics\n\n- [Fragment manager](/guide/fragments/fragmentmanager)\n- [Fragment transactions](/guide/fragments/transactions)\n- [Navigate between fragments using animations](/guide/fragments/animate)\n- [Fragment lifecycle](/guide/fragments/lifecycle)\n- [Saving state with fragments](/guide/fragments/saving-state)\n- [Communicate with fragments](/guide/fragments/communicate)\n- [Working with the AppBar](/guide/fragments/appbar)\n- [Display dialogs with DialogFragment](/guide/fragments/dialogs)\n- [Debug your fragments](/guide/fragments/debugging)\n- [Test your fragments](/guide/fragments/test)\n\n### Samples\n\n### Videos\n\n- [Single Activity: Why, when, and how (Android Dev Summit '18)](https://www.youtube.com/watch?v=2k8x8V77CrU)\n- [Fragments: Past, present, and future (Android Dev Summit '19)](https://www.youtube.com/watch?v=RS1IACnZLy4)"]]