Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Um Fragment representa uma
parte reutilizável da IU do seu app. Um fragmento define e gerencia o próprio
layout, tem o próprio ciclo de vida e pode processar os próprios eventos de entrada. Os fragmentos
não podem existir sozinhos. Eles precisam ser hospedados por uma atividade ou por outro
fragmento. A hierarquia de visualização do fragmento se torna parte da hierarquia de visualização do host ou é anexada a ela
.
Modularidade
Os fragmentos introduzem a modularidade e a reutilização na interface da sua atividade,
permitindo que você divida a interface em blocos discretos. As atividades são um local
ideal para colocar elementos globais em torno da interface do usuário do seu app, como uma
gaveta de navegação. Por outro lado, os fragmentos são mais adequados para definir e
gerenciar a IU de uma única tela ou parte de uma tela.
Imagine um app que responde a vários tamanhos de tela. Em telas maiores, você
pode querer que o app mostre uma gaveta de navegação estática e uma lista em layout
de grade. Em telas menores, você pode querer que o app mostre uma barra de navegação
inferior e uma lista em layout linear.
Gerenciar essas variações na atividade é
difícil. Separar os elementos de navegação do conteúdo pode tornar esse
processo mais gerenciável. A atividade é responsável por mostrar
a interface de navegação correta enquanto o fragmento mostra a lista com o layout
adequado.
Figura 1. Duas versões da mesma tela em diferentes
tamanhos. À esquerda, uma tela grande contém uma gaveta de navegação
controlada pela atividade e uma lista de grade controlada pelo
fragmento. À direita, uma tela pequena contém uma barra de navegação inferior
controlada pela atividade e uma lista linear controlada
pelo fragmento.
Dividir a IU em fragmentos facilita a modificação da aparência da
atividade no ambiente de execução. Enquanto sua atividade está no
estado de ciclo de vidaSTARTED ou
em um estado mais avançado, os fragmentos podem ser adicionados, substituídos ou removidos. Também é possível manter um registro
dessas mudanças em uma backstack gerenciada pela atividade. Assim,
as mudanças podem ser revertidas.
É possível usar várias instâncias da mesma classe de fragmento na
mesma atividade, em várias atividades ou até mesmo como filha de outro
fragmento. Pensando nisso, forneça apenas um fragmento com
a lógica necessária para gerenciar a própria interface. Evite a dependência ou
manipulação de um fragmento por outro.
Próximas etapas
Para ver mais documentações e recursos relacionados a fragmentos, consulte os links a seguir.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)"]]