Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Un elemento Fragment rappresenta una parte riutilizzabile dell'interfaccia utente dell'app. Un frammento definisce e gestisce il proprio layout, ha un proprio ciclo di vita e può gestire i propri eventi di input. I frammenti
non possono vivere da soli. Devono essere ospitati da un'attività o da un altro frammento. La gerarchia delle visualizzazioni del frammento diventa parte della gerarchia delle visualizzazioni dell'host o si collega a.
Modularità
I frammenti introducono modularità e riutilizzabilità nell'interfaccia utente dell'attività consentendoti di dividerla in blocchi discreti. Le attività sono la posizione ideale per inserire elementi globali nell'interfaccia utente dell'app, ad esempio un riquadro a scomparsa di navigazione. Al contrario, i frammenti sono più adatti a definire e
gestire l'interfaccia utente di una singola schermata o parte di una schermata.
Prendi in considerazione un'app che si adatta a schermi di varie dimensioni. Su schermi più grandi, è possibile che l'app mostri un riquadro di navigazione a scomparsa statico e un elenco in un layout a griglia. Sugli schermi più piccoli, invece, potresti voler visualizzare
una barra di navigazione in basso e un elenco in layout lineare.
Gestire queste variazioni nell'attività
non è facile da gestire. Separare gli elementi di navigazione dai contenuti può rendere più gestibile questa procedura. L'attività è quindi responsabile della visualizzazione dell'UI di navigazione corretta, mentre il frammento mostra l'elenco con il layout appropriato.
Figura 1. Due versioni dello stesso schermo su schermi di dimensioni diverse. A sinistra, uno schermo di grandi dimensioni contiene un riquadro di navigazione a scomparsa controllato dall'attività e un elenco a griglia controllato dal frammento. A destra, c'è una piccola schermata che contiene una barra di navigazione in basso controllata dall'attività e un elenco lineare controllato dal frammento.
La suddivisione della UI in frammenti semplifica la modifica dell'aspetto dell'attività in fase di runtime. Puoi aggiungere, sostituire o rimuovere frammenti mentre l'attività è nello stato di ciclo di vitaSTARTED o in un livello superiore. Inoltre, puoi tenere traccia di queste modifiche in uno stack di back stack gestito dall'attività, in modo che le modifiche possano essere annullate.
Puoi utilizzare più istanze della stessa classe di frammenti all'interno della stessa attività, in più attività o anche come figlio di un altro frammento. Tenendo a mente questo, fornisci solo un frammento con
la logica necessaria per gestire la propria UI. Evita di dipendere o di manipolare un frammento da un altro.
Passaggi successivi
Per ulteriore documentazione e risorse relative ai frammenti, consulta quanto segue.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)"]]