Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Un Fragment representa una parte reutilizable de la IU de tu app. Un fragmento define y administra su propio diseño, tiene su propio ciclo de vida y puede administrar sus propios eventos de entrada. Los fragmentos no pueden existir por sí solos. Deben estar alojados por una actividad u otro fragmento. La jerarquía de vistas del fragmento forma parte de la jerarquía de vistas del host o está conectada a ella.
Modularidad
Los fragmentos introducen la modularidad y la capacidad de reutilización en la IU de tu actividad, ya que te permiten dividir la IU en fragmentos separados. Las actividades son un lugar ideal para colocar elementos globales en la interfaz de usuario de tu app, como un panel lateral de navegación. En cambio, los fragmentos son más adecuados para definir y administrar la IU de una sola pantalla o de una parte de ella.
Tomemos como ejemplo una app que responda a varios tamaños de pantalla. En pantallas más grandes, te recomendamos que la app muestre un panel lateral de navegación estático y una lista en un diseño de cuadrícula. En pantallas más pequeñas, te recomendamos que la app muestre una barra de navegación inferior y una lista en un diseño lineal.
Administrar estas variaciones en la actividad es difícil de controlar. Separar los elementos de navegación del contenido puede hacer que ese proceso sea más fácil de manejar. La actividad se encarga de mostrar la IU de navegación correcta, mientras que el fragmento muestra la lista con el diseño adecuado.
Figura 1: Dos versiones de la misma pantalla en pantallas de tamaños diferentes. En la parte izquierda, una pantalla grande contiene un panel lateral de navegación controlado por la actividad y una lista de cuadrícula controlada por el fragmento. A la derecha, una pantalla pequeña contiene una barra de navegación inferior controlada por la actividad y una lista lineal controlada por el fragmento.
Dividir tu IU en fragmentos te permite modificar la apariencia de la actividad con más facilidad durante el tiempo de ejecución. Mientras la actividad está en el estado de ciclo de vidaSTARTED o en uno superior, puedes agregar, reemplazar o quitar fragmentos. Puedes mantener un registro de esos cambios en una pila de actividades administrada por la actividad, lo que permite que se reviertan los cambios.
Puedes usar varias instancias de la misma clase de fragmento dentro de la misma actividad, en varias actividades o incluso como elemento secundario de otro fragmento. Con eso en mente, solo debes proporcionar un fragmento con la lógica necesaria para administrar su propia IU. Debes evitar que un fragmento dependa de otro, así como la manipulación del fragmento desde otro.
Próximos pasos
Para obtener más documentación y recursos relacionados con fragmentos, consulta lo siguiente.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)"]]