Fragment
| Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
|---|---|---|---|---|
| 13 de agosto de 2025 | 1.8.9 | - | - | - |
Cómo declarar dependencias
Para agregar una dependencia en Fragment, debes agregar el repositorio de Maven de Google a tu proyecto. Lee el repositorio de Maven de Google para obtener más información.
Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:
Groovy
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.
Comentarios
Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
Versión 1.8
Versión 1.8.9
13 de agosto de 2025
Lanzamiento de androidx.fragment:fragment-*:1.8.9. La versión 1.8.9 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema en el que cancelar un gesto de atrás predictivo que muestra una operación de ocultar causaba que el gesto posterior no se animara correctamente cuando se usaban animadores. (I0a400, b/384765586)
- Se corrigió un error por el que una combinación de
setMaxLifecycleypopBackStackpodía no mover el fragmento superior a RESUMED. (I3448b, b/406127576)
Versión 1.8.8
4 de junio de 2025
Lanzamiento de androidx.fragment:fragment-*:1.8.8. La versión 1.8.8 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema por el que
FragmentManagerfallaba cuando intentaba guardar el estado de los fragmentos que se agregaron consetMaxLifecycle(Lifecycle.State.INITIALIZED). Como estos fragmentos nunca pasaron poronCreate(), ya no tienen ningún estado guardado ni se llama aonSaveInstanceState(). (I6e37a)
Versión 1.8.7
20 de mayo de 2025
Lanzamiento de androidx.fragment:fragment-*:1.8.7. La versión 1.8.7 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema por el que
FragmentManagerno estaba en el estado adecuado después de las operaciones de extracción y reemplazo en el mismo fotograma, lo que podía provocar una falla junto con la extracción de la pila de historial a través depopBackStacko el gesto de atrás predictivo. (I50ad1) - Se corrigió una falla causada por el uso de transiciones de AndroidX y por entrar en un caso en el que las transacciones de fragmentos consecutivas rápidas intentan cancelar una transición no iniciada y la biblioteca de transiciones de AndroidX no borra correctamente el estado de la transición. (consulta b/414612221). (Ib5235)
Versión 1.8.6
12 de febrero de 2025
Lanzamiento de androidx.fragment:fragment-*:1.8.6. La versión 1.8.6 contiene estas confirmaciones.
Correcciones de errores
- La anulación de
setOnApplyWindowInsetsListenerdeFragmentContainerViewahora toma un objeto de escucha nulo, lo que coincide con lo que permite el framework. (I575f0, b/282790626)
Versión 1.8.5
30 de octubre de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.5. La versión 1.8.5 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un
IllegalStateExceptionque se activaba consaveBackStacksolo después de que se cancelaba o interrumpía un gesto de atrás predictivo. (I3387d, b/342419080)
Versión 1.8.4
2 de octubre de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.4. La versión 1.8.4 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema por el que, si se presionaba rápidamente el botón Atrás del sistema o se realizaba rápidamente el gesto de atrás, se producían fallas en los fragmentos cuando se usaban transiciones de AndroidX. (Ibc038, b/364804225)
- Se solucionó un problema en los fragmentos por el que interrumpir un gesto de atrás predictivo enviaba el administrador de fragmentos a un estado indefinido y hasta mostraba el fragmento incorrecto. (If82e2, b/338624457)
- Se corrigió un error
UninitializedPropertyAccessExceptionenAndroidFragmentcuando se reemplaza de forma dinámica la clase que usa tu instancia deAndroidFragment. (I12dea)
Versión 1.8.3
4 de septiembre de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.3. La versión 1.8.3 contiene estas confirmaciones.
Correcciones de errores
FragmentManagerahora tiene en cuenta correctamente las operaciones pendientes cuando controla el gesto de atrás predictivo. Esto debería garantizar que la acción de volver atrás del sistema ya no cause unIndexOutOfBoundsException. (I9ba32, b/342316801)AndroidFragmentya no falla si se agrega a la composición mientras ya se guardó el estado de la actividad o el fragmento que lo contiene. (I985e9, b/356643968)
Versión 1.8.2
24 de julio de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.2. La versión 1.8.2 contiene estas confirmaciones.
Correcciones de errores
- Ahora,
AndroidFragmentcontrola correctamente los casos en los que el fragmento principal se coloca en la pila de actividades de Fragment, lo que evita problemas de "No se encontró ninguna vista para el ID" cuando se vuelve a ese fragmento. (I94608) - Los fragmentos que se agregan a través del método
FragmentTransaction.addque toma unViewGroupahora esperan aonContainerAvailableantes de avanzar aonStart(). Esto afecta a los usuarios de esa API, comoAndroidFragment, que ahora espera a queAndroidFragmentvuelva a ingresar a la composición antes de moverlo a través deonStart(). (I94608)
Versión 1.8.1
26 de junio de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.1. La versión 1.8.1 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema por el que los fragmentos sin un contenedor se marcaban inmediatamente como
DESTROYEDcuando se iniciaba un gesto de atrás predictivo. Ahora se mantienen en el estadoCREATEDhasta que se completa el gesto. (If6b83, b/345244539)
Versión 1.8.0
12 de junio de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.0. La versión 1.8.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.7.0
- El artefacto
fragment-composeahora contiene unAndroidFragmentComposableque permite agregar fragmentos a la jerarquía de Compose a través del nombre de la clase de fragmento. Controla automáticamente el guardado y el restablecimiento del estado del fragmento. Esto debe usarse como reemplazo directo del enfoque recomendado anteriormente de usarAndroidViewBindingpara inflar un Fragment. - La devolución de llamada
onBackStackChangeCancelleden la interfazOnBackStackChangedListenerdeFragmentManagerahora se activa como parte de la ejecución de operaciones enFragmentManager, lo que la acerca más al tiempo de la devolución de llamadaonBackStackChangeCommitted.
Versión 1.8.0-rc01
29 de mayo de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.0-rc01. La versión 1.8.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- La devolución de llamada
onBackStackChangeCancelleden la interfazFragmentManagers OnBackStackChangedListenerahora se activa como parte de la ejecución de operaciones enFragmentManager, lo que la acerca más a la sincronización de la devolución de llamadaonBackStackChangeCommitted. (I5ebfb, b/332916112)
Versión 1.8.0-beta01
14 de mayo de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.0-beta01. La versión 1.8.0-beta01 contiene estas confirmaciones.
Correcciones de errores
- A partir de Fragment
1.7.1: El gesto atrás predictivo ahora solo se ejecutará para las transacciones en las que todos los fragmentos tengan un Animator o una transición de AndroidX que se pueda buscar. Se solucionó un problema por el que se mostraba una pantalla negra cuando se cancelaba una transacción parcialmente buscable. (I43037, b/339169168)
Versión 1.8.0-alpha02
17 de abril de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.0-alpha02. La versión 1.8.0-alpha02 contiene estas confirmaciones.
Correcciones de errores
- Desde Fragment
1.7.0-rc02: Se agregaron registros para indicar por qué no se ejecutará la configuración de unsharedElementsin ninguna otra transición. (Iec48e) - A partir de Fragment
1.7.0-rc02: Se corrigió un error por el que se producía una falla si se agregaba un elemento compartido no apto para la búsqueda a una transacción en la que todas las demás transiciones eran aptas para la búsqueda. Ahora, la transacción se considerará correctamente como no apta para la búsqueda. (I18ccd)
Versión 1.8.0-alpha01
3 de abril de 2024
Lanzamiento de androidx.fragment:fragment-*:1.8.0-alpha01. La versión 1.8.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- El nuevo
AndroidFragmentComposablepermite agregar fragmentos a la jerarquía de Compose a través del nombre de la clase de fragmento. Controla automáticamente el guardado y el restablecimiento del estado del fragmento. Se puede usar como reemplazo directo deComposablede AndroidViewBinding.(b/312895363, Icf841)
Cambios en la documentación
- Se actualizó la documentación de las APIs de
OnBackStackChangedListenerpara indicar cuándo se llaman y cómo se deben usar. (I0bfd9)
Actualización de dependencia
- Fragment ahora depende de Profile Installer 1.3.1.
Versión 1.7
Versión 1.7.1
14 de mayo de 2024
Lanzamiento de androidx.fragment:fragment-*:1.7.1. La versión 1.7.1 contiene estas confirmaciones.
Correcciones de errores
- El gesto atrás predictivo ahora solo se ejecutará para las transacciones en las que todos los fragmentos tengan un Animator o una transición de Androidx que se pueda buscar. Se corrigió un problema por el que se mostraba una pantalla en blanco cuando se cancelaba una transacción parcialmente buscable. (I43037, b/339169168)
Versión 1.7.0
1 de mayo de 2024
Lanzamiento de androidx.fragment:fragment-*:1.7.0. La versión 1.7.0 contiene estas confirmaciones.
Compatibilidad con el gesto de atrás predictivo
- Los fragmentos ahora admiten el gesto atrás predictivo integrado en la app cuando se usa
Animatoro AndroidX Transition 1.5.0. Esto permite que los usuarios usen el gesto de atrás para ver el fragmento anterior buscando tu Animator/Transition antes de decidir si confirman la transacción completando el gesto o cancelándolo.
| Sistema de transición | Recurso XML | Es compatible con el gesto atrás predictivo |
|---|---|---|
Animation |
R.anim |
No |
Animator |
R.animator |
Sí |
Framework Transition |
R.transition |
No |
AndroidX Transition con Transition 1.4.1 o una versión anterior |
R.transition |
No |
AndroidX Transition con Transition 1.5.0 |
R.transition |
Sí |
Si ves algún problema con la compatibilidad con el gesto atrás predictivo en Fragments después de habilitar el gesto atrás predictivo, presenta un problema contra Fragment con un proyecto de muestra que reproduzca el problema. Puedes inhabilitar el gesto de atrás predictivo con FragmentManager.enabledPredictiveBack(false) en el onCreate() de tu actividad.
FragmentManager.OnBackStackChangedListener() ahora proporciona onBackStackChangeProgressed() y onBackStackChangeCancelled() para recibir eventos de progreso y cancelación del gesto atrás predictivo, respectivamente.
Fragment Compose Artifact
Se creó un nuevo artefacto fragment-compose que se enfoca en admitir apps que están en proceso de migrar de una arquitectura basada en Fragment a una arquitectura completamente basada en Compose.
La primera función disponible en este nuevo artefacto es un método de extensión content en Fragment que busca facilitar el uso de Compose para la IU de un Fragment individual creando un ComposeView por ti y configurando el ViewCompositionStrategy correcto.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Versión 1.7.0-rc02
17 de abril de 2024
Lanzamiento de androidx.fragment:fragment-*:1.7.0-rc02. La versión 1.7.0-rc02 contiene estas confirmaciones.
Correcciones de errores
- Se agregaron registros para indicar por qué no se ejecutará la configuración de un
sharedElementsin ninguna otra transición. (Iec48e) - Se corrigió un error por el que se producía una falla si se agregaba un elemento compartido no buscable a una transacción en la que todas las demás transiciones eran buscables. Ahora, la transacción se considerará correctamente como no apta para la búsqueda. (I18ccd)
Versión 1.7.0-rc01
3 de abril de 2024
Lanzamiento de androidx.fragment:fragment-*:1.7.0-rc01. La versión 1.7.0-rc01 contiene estas confirmaciones.
Actualización de dependencia
- Fragment ahora depende de Profile Installer 1.3.1.
Versión 1.7.0-beta01
20 de marzo de 2024
Lanzamiento de androidx.fragment:fragment-*:1.7.0-beta01. La versión 1.7.0-beta01 contiene estas confirmaciones.
Cambios en la API
FragmentHostCallbackahora está escrito en Kotlin para que la nulabilidad del tipo genérico del host coincida con la nulabilidad del tipo de devolución deonGetHost(). (I40af5)
Correcciones de errores
- Se solucionó un problema por el que, cuando se confirmaba un gesto de atrás predictivo en un fragmento que no estaba en un contenedor, ese fragmento nunca se destruía. El fragmento ahora se moverá de inmediato al estado final. (Ida0d9)
- Se solucionó un problema en Fragments por el que interrumpir las transiciones entrantes con un gesto de atrás predictivo destruía la vista entrante y dejaba una pantalla en blanco. (Id3f22, b/319531491)
Versión 1.7.0-alpha10
7 de febrero de 2024
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha10. La versión 1.7.0-alpha10 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó el problema conocido en la versión anterior de Fragment por el que, si se usaba la compatibilidad con el gesto atrás predictivo de Fragment para
Animatoro la transición de AndroidX, los fragmentos lanzaban unNullPointerExceptiondesdehandleOnBackProgressedsi nunca se había agregado unFragmentManager.OnBackStackChangedListenera través deaddOnBackStackChangedListener. (I7c835)
Versión 1.7.0-alpha09
24 de enero de 2024
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha09. La versión 1.7.0-alpha09 contiene estas confirmaciones.
Fragment Compose Artifact
Se creó un nuevo artefacto fragment-compose que se enfoca en admitir apps que están en proceso de migrar de una arquitectura basada en Fragment a una arquitectura completamente basada en Compose.
La primera función disponible en este nuevo artefacto es un método de extensión content en Fragment que busca facilitar el uso de Compose para la IU de un Fragment individual creando un ComposeView por ti y configurando el ViewCompositionStrategy correcto. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Nuevas funciones
FragmentManager.OnBackStackChangedListener()ahora proporcionaonBackStackChangeProgressed()yonBackStackChangeCancelled()para recibir eventos de progreso y cancelación del gesto atrás predictivo, respectivamente. (214b87)
Problema conocido
- Cuando se usa la compatibilidad con el gesto atrás predictivo de Fragment para
Animatoro la transición de AndroidX, los fragmentos arrojarán unNullPointerExceptiondesdehandleOnBackProgressedsi nunca se agregó unFragmentManager.OnBackStackChangedListenera través deaddOnBackStackChangedListener. Agregar un objeto de escucha de forma manual solucionará la falla. Se incluirá una corrección para este problema en la próxima versión de Fragments.
Versión 1.7.0-alpha08
10 de enero de 2024
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha08. La versión 1.7.0-alpha08 contiene estas confirmaciones.
Realiza una limpieza
- Se quitó la solución alternativa para la biblioteca de Transition, que se corrigió en Transition
1.5.0-alpha06. (I04356)
Versión 1.7.0-alpha07
29 de noviembre de 2023
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha07. La versión 1.7.0-alpha07 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un
NullPointerExceptionque se producía cuando se establecía una transición de elementos compartidos y no se establecía una transición de entrada o salida. (I8472b) - A partir de Fragment
1.6.2: Cuando se infla el fragmento de unFragmentContainerView, ahora se puede acceder a sus estados, comoFragmentManager, Host y el ID, en la devolución de llamadaonInflate. (I1e44c, b/307427423) - A partir de Fragment
1.6.2: Cuando se usaclearBackStackpara quitar un conjunto de fragmentos, ahora se borrará elViewModelde cualquier fragmento anidado cuando se borre elViewModelsdel fragmento principal. (I6d83c, b/296173018)
Versión 1.7.0-alpha06
4 de octubre de 2023
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha06. La versión 1.7.0-alpha06 contiene estas confirmaciones.
Actualización de dependencia
- Se actualizó Fragments para que dependa de la nueva API de
animateToStartagregada en Transition1.5.0-alpha04.
Versión 1.7.0-alpha05
20 de septiembre de 2023
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha05. La versión 1.7.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
- Los fragmentos ahora admiten el gesto atrás predictivo cuando se usan transiciones de AndroidX. Esto te permite usar el gesto de atrás para buscar el fragmento anterior con tu transición personalizada de AndroidX antes de decidir confirmar o cancelar la transacción a través del gesto completado. Debes depender de la versión de Transition
1.5.0-alpha03para habilitar esta función. (Ib49b4, b/285175724)
Errores conocidos
- Actualmente, hay un problema por el que, después de cancelar un gesto de atrás con una transición una vez, la próxima vez que inicies el gesto de atrás, no se ejecutará la transición, lo que provocará una pantalla en blanco. Esto podría deberse a un problema en la biblioteca de Transition. (b/300157785). Si ves este problema, presenta un reclamo contra Fragment con un proyecto de muestra que reproduzca el problema. Puedes inhabilitar el gesto de atrás predictivo con
FragmentManager.enabledPredictiveBack(false)en elonCreate()de tu actividad.
Versión 1.7.0-alpha04
6 de septiembre de 2023
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha04. La versión 1.7.0-alpha04 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema que se producía al cancelar un gesto de atrás predictivo, en el que los fragmentos no alcanzaban el estado de ciclo de vida correcto. (I7cffe, b/297379023)
- Se corrigió una regresión en la que se permitía que las animaciones se ejecutaran con transiciones. (I59f36)
- Se corrigió un problema que se producía al usar el gesto atrás predictivo con fragmentos, en el que intentar volver dos veces en rápida sucesión en el penúltimo fragmento de la pila de actividades provocaba una falla. (Ifa1a4)
Versión 1.7.0-alpha03
23 de agosto de 2023
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha03. La versión 1.7.0-alpha03 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema con Fragments cuando se usaba Atrás predictivo que provocaba que se omitiera el primer fragmento en la pila de atrás del administrador de fragmentos y que se finalizara la actividad cuando se usaba el sistema Atrás a través de la navegación con 3 botones o el gesto de Atrás predictivo. (I0664b, b/295231788)
Versión 1.7.0-alpha02
9 de agosto de 2023
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha02. La versión 1.7.0-alpha02 contiene estas confirmaciones.
Correcciones de errores
- Cuando se usan fragmentos con gestos de atrás predictivo desde la API 34, si usas un sistema de transición que no admite la búsqueda (
Animations,Transitions) o no usas transiciones, los fragmentos ahora esperarán hasta que se complete el gesto antes de ejecutar la acción de atrás. (I8100c)
Versión 1.7.0-alpha01
7 de junio de 2023
Lanzamiento de androidx.fragment:fragment-*:1.7.0-alpha01. Esta versión se desarrolló en una rama interna.
Nuevas funciones
- Los fragmentos ahora admiten el gesto atrás predictivo en la app cuando se usa
Animator. Esto te permite usar el gesto de atrás para ver el fragmento anterior con tu Animator personalizado antes de decidir si confirmas la transacción a través del gesto completado o la cancelas. También puedes inhabilitar este nuevo comportamiento usando elenablePredictiveBack()experimental y pasandofalse.
Versión 1.6
Versión 1.6.2
1 de noviembre de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.2. La versión 1.6.2 contiene estas confirmaciones.
Correcciones de errores
- Cuando se infla el fragmento de un
FragmentContainerView, ahora se puede acceder a sus estados, comoFragmentManager, Host y el ID, en la devolución de llamadaonInflate. (I1e44c, b/307427423) - Cuando se usa
clearBackStackpara quitar un conjunto de fragmentos, ahora se borrará elViewModelde cualquier fragmento anidado cuando se borre elViewModelsdel fragmento principal. (I6d83c, b/296173018)
Versión 1.6.1
26 de julio de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.1. La versión 1.6.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema por el que el estado guardado almacenado cuando se detenía la actividad, pero no se destruía, se almacenaba en caché de forma incorrecta incluso después de que la instancia del fragmento volvía al estado
RESUMED. Esto haría que se reutilizara ese estado almacenado en caché si la instancia del fragmento estaba en la pila de actividades cuando se usaba la API de varias pilas de actividades para guardar y restablecer ese fragmento. (I71288, b/246289075)
Actualización de dependencia
- Fragment ahora depende de Activity 1.7.2. Se corrigió un problema por el que los usuarios de Kotlin no podían extender
ComponentDialogsin una dependencia explícita en Activity. (b/287509323)
Versión 1.6.0
7 de junio de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.0. La versión 1.6.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.5.0
- El estado guardado de
Fragmentse dividió por completo entre el estado de biblioteca privada (clasesParcelablepersonalizadas) y el estado proporcionado por el desarrollador, que ahora siempre se almacena en unBundleque permite determinar con exactitud el origen del estado de un fragmento - La interfaz
FragmentManager.OnBackStackChangedListenerse expandió con dos devoluciones de llamada adicionales deonBackStackChangeStartedyonBackStackChangeCommittedque se llaman con cadaFragmentjusto antes de que se agreguen o quiten de la pila de actividades del fragmento y justo después de que se confirme la transacción, respectivamente. FragmentStrictModeagregó una nuevaWrongNestedHierarchyViolationque detecta cuándo un fragmento secundario está anidado dentro de su jerarquía de vista superior, pero no se lo agregó alchildFragmentManagersuperior- Las APIs de
FragmentyFragmentManagerque toman un objetoIntentoIntentSenderahora tienen la anotación correcta con@NonNullpara evitar pasar un valor nulo, ya que un valor nulo siempre provocaría fallas de forma respectiva en las APIs del framework de Android a las que llaman estos métodos. DialogFragmentahora proporciona acceso aComponentDialogsubyacente a través de la API derequireComponentDialog().- Fragment ahora depende de Lifecycle
2.6.1. - Fragment ahora depende de SavedState
1.2.1. - Fragment ahora depende de ProfileInstaller
1.3.0. El artefacto
fragment-testing-manifestsepara las entradas del manifiesto del resto de los componentes de prueba de fragmentos. Esto significa que puedes hacer lo siguiente:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")Se evitan los conflictos debido a la desviación de la versión entre
fragment-testingyandroidx.test.
Versión 1.6.0-rc01
10 de mayo de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.0-rc01. La versión 1.6.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema que provocaba que se enviaran
ActivityResultcon el código de solicitud incorrecto cuando se realizaban varias solicitudes destartActivityForResultde forma consecutiva. (If0b9d, b/249519359) - Se corrigió un problema por el que se enviaban las devoluciones de llamada de
onBackStackChangeListenerpara las transacciones que no cambiaban la pila de actividades si se mezclaban con transacciones que sí lo hacían (I0eb5c, b/279306628).
Versión 1.6.0-beta01
19 de abril de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.0-beta01. La versión 1.6.0-beta01 contiene estas confirmaciones.
Correcciones de errores
- Usar
postponeEnterTransitioncon un tiempo de espera y, luego, reemplazar el fragmento pospuesto ya no genera una pérdida del fragmento pospuesto. (I2ec7d, b/276375110) - Las nuevas devoluciones de llamada
onBackStackChangeStartedyonBackStackChangeCommittedahora solo enviarán un fragmento una sola vez, incluso si varias transacciones contienen el mismo fragmento. (Ic6b69)
Versión 1.6.0-alpha09
5 de abril de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.0-alpha09. La versión 1.6.0-alpha09 contiene estas confirmaciones.
Cambios en la API
DialogFragmentahora proporciona acceso aComponentDialogsubyacente a través de la API derequireComponentDialog(). (I022e3, b/234274777)- Las APIs de fragmentos
commitNow(),executePendingTransactions()ypopBackStackImmediate()se anotaron con@MainThread, lo que significa que ahora todas arrojarán errores de compilación cuando no se llamen desde el subproceso principal en lugar de esperar a fallar en el tiempo de ejecución. (Ic9665, b/236538905)
Correcciones de errores
- Se corrigió un error en
FragmentManagerpor el que guardar y restablecer en el mismo fotograma podía provocar una falla. (Ib36af, b/246519668) - Las devoluciones de llamada
OnBackStackChangedListener,onBackStackChangeStartedyonBackStackChangeCommittedahora solo se ejecutan cuando cambia la pila de actividadesFragmentManager. (I66055, b/274788957)
Versión 1.6.0-alpha08
22 de marzo de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.0-alpha08. La versión 1.6.0-alpha08 contiene estas confirmaciones.
Cambio de comportamiento
- Se ajustó el tiempo de la devolución de llamada
OnBackStackChangedListener.onBackStackChangeCommitedpara que se ejecute antes de las operaciones de fragmentos. Esto garantiza que la devolución de llamada nunca recibirá un fragmento que esté separado. (I66a76, b/273568280)
Correcciones de errores
- A partir de Fragment
1.5.6: Se solucionó un problema por el cual llamar aclearFragmentResultListenerdentro de unsetFragmentResultListenerno funcionaba si elLifecycleya eraSTARTEDy ya había un resultado disponible. (If7458)
Actualizaciones de dependencias
- Fragment ahora depende de Lifecycle
2.6.1. (586fe7) - Fragment ahora depende de SavedState
1.2.1. (078e4e) - Fragment ahora depende de ProfileInstaller
1.3.0. (3fc05b)
Versión 1.6.0-alpha07
8 de marzo de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.0-alpha07. La versión 1.6.0-alpha07 contiene estas confirmaciones.
Correcciones de errores
- Desde Fragment
1.5.6: Se solucionó un problema por el cual la eliminación de cualquier fragmento, ya sea que hubiera agregado elementos de menú o no, invalidaba el menú de la actividad. (50f098, b/244336571)
Versión 1.6.0-alpha06
22 de febrero de 2023
Lanzamiento de androidx.fragment:fragment-*:1.6.0-alpha06. La versión 1.6.0-alpha06 contiene estas confirmaciones.
Cambio de comportamiento
- Ahora se ejecutará la nueva devolución de llamada de
onBackStackChangedStarteden elonBackStackChangedListenerdeFragmentManagerantes de que los fragmentos comiencen a pasar a sus estados de destino (I34726).
Versión 1.6.0-alpha05
8 de febrero de 2023
Se lanzó androidx.fragment:fragment-*:1.6.0-alpha05. La versión 1.6.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
- La interfaz
FragmentManager.OnBackStackChagnedListenerahora ofrece dos devoluciones de llamada adicionales,onBackStackChangeStartedyonBackStackChangeCommitted, que permiten información adicional y control sobre cuándo se producen cambios en la pila de actividades enFragmentManager(Ib7ce5, b/238686802).
Cambios en la API
- Las APIs de
FragmentyFragmentManagerque toman un objetoIntentoIntentSenderahora tienen la anotación correcta con@NonNullpara evitar pasar un valor nulo, ya que un valor nulo siempre provocaría fallas de forma respectiva en las APIs del framework de Android a las que llaman estos métodos (I06fd4).
Versión 1.6.0-alpha04
7 de diciembre de 2022
Lanzamiento de androidx.fragment:fragment-*:1.6.0-alpha04. La versión 1.6.0-alpha04 contiene estas confirmaciones.
Nuevas funciones
FragmentStrictModeagregó una nuevaWrongNestedHierarchyViolationque detecta cuándo un fragmento secundario está anidado dentro de su jerarquía de vista superior, pero no se lo agregó alchildFragmentManagersuperior (I72521, b/249299268).
Cambios en el comportamiento
- Los fragmentos ahora restablecen su estado
SavedStateRegistryantes deonAttach(), lo que garantiza que estén disponibles desde todos los métodos de ciclo de vida ascendentes (I1e2b1).
Cambios en la API
- El artefacto
fragment-testing-manifestsepara las entradas del manifiesto del resto de los componentes de prueba de fragmentos. Esto significa que puedes hacer lo siguiente:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Se evitan los conflictos debido a la desviación de la versión entre fragment-testing y androidx.test (I8e534, b/128612536).
Correcciones de errores
- A partir de Fragment
1.5.5: los fragmentos ya no guardarán de forma incorrecta el estadoViewModelcomo parte del estado guardado del registro de vistas (I10d2b, b/253546214).
Versión 1.6.0-alpha03
5 de octubre de 2022
Lanzamiento de androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 y androidx.fragment:fragment-testing:1.6.0-alpha03. La versión 1.6.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Ahora las clases que extienden
DialogFragmentdeberán llamar a super en sus anulaciones deonDismiss()(I14798, b/238928865).
Correcciones de errores
- Se corrigieron las regresiones que generaba la integración de las interfaces de devolución de llamada del proveedor nuevo (
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) a fin de garantizar que los fragmentos siempre obtengan las devoluciones de llamada correctas (I9b380,I34581, I8dfe6, b/242570955, If9d6b, Id0096,I690b3, I2cba2).
Versión 1.6.0-alpha02
24 de agosto de 2022
Se lanzaron androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 y androidx.fragment:fragment-testing:1.6.0-alpha02. La versión 1.6.0-alpha02 contiene estas confirmaciones.
Correcciones de errores
- A partir de Fragment
1.5.2: Se solucionó un problema en el que la ejecución de una transacciónpopBackStack()y otrareplace()al mismo tiempo generaba que los fragmentos salientes ejecutaran el objetoAnimation/Animatorincorrecto (Ib1c07, b/214835303).
Versión 1.6.0-alpha01
27 de julio de 2022
Lanzamiento de androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 y androidx.fragment:fragment-testing:1.6.0-alpha01. La versión 1.6.0-alpha01 contiene estas confirmaciones.
Cambios en el comportamiento
- El estado guardado de
Fragmentse dividió por completo entre el estado de biblioteca privada (clasesParcelablepersonalizadas) y el estado proporcionado por el desarrollador, que ahora siempre se almacena en unBundleque permite determinar con exactitud el origen del estado de un fragmento (b/207158202).
Correcciones de errores
- A partir de Fragment
1.5.1: Se corrigió una regresión enDialogFragmentCallbacksDetectoren la que el uso de la versión de lint incluida en AGP 7.4 hacía que lint fallara (b/237567009).
Actualización de dependencia
- A partir de Fragment
1.5.1: La biblioteca de Fragment ahora depende de Lifecycle2.5.1(Id204c). - A partir de Fragment
1.5.1: La biblioteca de Fragment ahora depende de Activity1.5.1(I10f07).
Versión 1.5
Versión 1.5.7
19 de abril de 2023
Lanzamiento de androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 y androidx.fragment:fragment-testing:1.5.7. La versión 1.5.7 contiene estas confirmaciones.
Correcciones de errores
- Usar
postponeEnterTransitioncon un tiempo de espera y, luego, reemplazar el fragmento pospuesto ya no genera una pérdida del fragmento pospuesto. (I2ec7d, b/276375110)
Versión 1.5.6
22 de marzo de 2023
Lanzamiento de androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 y androidx.fragment:fragment-testing:1.5.6. La versión 1.5.6 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema por el que la eliminación de cualquier fragmento, ya sea que hubiera agregado elementos de menú o no, invalidaba el menú de la actividad. (50f098, b/244336571)
- Se solucionó un problema por el que llamar a
clearFragmentResultListenerdentro de unsetFragmentResultListenerno funcionaba si elLifecycleya eraSTARTEDy ya había un resultado disponible. (If7458)
Versión 1.5.5
7 de diciembre de 2022
Lanzamiento de androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 y androidx.fragment:fragment-testing:1.5.5. La versión 1.5.5 contiene estas confirmaciones.
Correcciones de errores
- Los fragmentos ya no guardarán de forma incorrecta el estado
ViewModelcomo parte del estado guardado del registro de vistas (I10d2b, b/253546214).
Versión 1.5.4
24 de octubre de 2022
Lanzamiento de androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 y androidx.fragment:fragment-testing:1.5.4. La versión 1.5.4 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error en el que el uso de un
FragmentControllerpersonalizado con un host que no implementa una interfaz de devolución de llamada del proveedor (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) y la llamada a su función de envío obsoleta hacía que no se enviara a los fragmentos secundarios (I9b380).
Versión 1.5.3
21 de septiembre de 2022
Se lanzaron androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 y androidx.fragment:fragment-testing:1.5.3. La versión 1.5.3 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error que causaba que los fragmentos de la pila de actividades recibieran devoluciones de llamada
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()yonConfigurationChanged()(I34581, I8dfe6 y b/242570955). - Los fragmentos secundarios anidados ya no recibirán varias devoluciones de llamada
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()oonConfigurationChanged()(I690b3, Id0096, If9d6b y I2cba2).
Versión 1.5.2
10 de agosto de 2022
Lanzamiento de androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 y androidx.fragment:fragment-testing:1.5.2. La versión 1.5.2 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema en el que la ejecución de una transacción
popBackStack()yreplace()al mismo tiempo podía generar que los fragmentos salientes ejecutaran el objetoAnimation/Animatorincorrecto (Ib1c07, b/214835303).
Versión 1.5.1
27 de julio de 2022
Lanzamiento de androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 y androidx.fragment:fragment-testing:1.5.1. La versión 1.5.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una regresión en
DialogFragmentCallbacksDetectoren la que el uso de la versión de lint incluida en AGP 7.4 hacía que lint fallara (b/237567009).
Actualización de dependencia
- La biblioteca de Fragment ahora depende de Lifecycle
2.5.1(Id204c). - La biblioteca de Fragment ahora depende de Activity
1.5.1(I10f07).
Versión 1.5.0
29 de junio de 2022
Se lanzaron androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 y androidx.fragment:fragment-testing:1.5.0. La versión 1.5.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.4.0
- Integración de CreationExtras:
Fragmentahora puede proporcionar unViewModelProvider.Factorysin estado a través delCreationExtrasde Lifecycle2.5.0. - Integración de diálogos de componentes:
DialogFragmentahora usaComponentDialoga través de Activity1.5.0como el diálogo predeterminado que muestraonCreateDialog(). - Refactorización del estado de las instancias guardado: Los fragmentos comenzaron a cambiar la forma en que guardan el estado de sus instancias. Este es un esfuerzo para identificar claramente qué estado se guardó en el fragmento y la fuente de estado. Entre los cambios actuales, se incluyen los siguientes:
FragmentManagerahora guarda su estado de instancia guardado en unBundle, en lugar de hacerlo directamente en unParcelablepersonalizado.- Los resultados configurados a través de
Fragment Result APIsque aún no se entregaron ahora se guardan por separado del estado interno deFragmentManager. - El estado asociado con cada fragmento ahora se guarda por separado del estado interno de
FragmentManager, lo que te permite relacionar la cantidad de estado guardado asociado con un fragmento individual con los IDs únicos presentes en el registro de depuración deFragment.
Otros cambios
FragmentStrictModeahora permite que fragmentos privados de terceros omitan penalizaciones por incumplimiento específicas usandoallowViolation()con el nombre de clase.- Dejaron de estar disponibles las APIs de Fragment para proporcionar un menú a la
ActionBarde tu actividad. Las APIs deMenuHostyMenuProviderque se agregaron en Activity1.4.0brindan una plataforma de API equivalente apta para ciclos de vida que se puede probar y que los fragmentos deben usar.
Versión 1.5.0-rc01
11 de mayo de 2022
Se lanzaron androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 y androidx.fragment:fragment-testing:1.5.0-rc01. La versión 1.5.0-rc01 contiene estas confirmaciones.
Refactorización del estado de las instancias guardado
- El estado asociado con cada fragmento ahora se guarda por separado del estado interno de
FragmentManager, lo que te permite relacionar la cantidad de estado guardado asociado con un fragmento individual con los IDs únicos presentes en el registro de depuración de fragmento (a153e0, b/207158202).
Versión 1.5.0-beta01
20 de abril de 2022
Se lanzaron androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 y androidx.fragment:fragment-testing:1.5.0-beta01. La versión 1.5.0-beta01 contiene estas confirmaciones.
Cambios en la API
DialogFragmentagregó un nuevo métododismissNowque usacommitNowpara la paridad con la funciónshowNow. Ten en cuenta que esto no hará queDialogse descarte de inmediato, sino que solo actualizará el estado deFragmentManagerde manera síncrona (I15c36, b/72644830).
Refactorización del estado de las instancias guardado
FragmentManagerahora guarda su estado de instancia guardado en unBundle, en lugar de hacerlo directamente en unParcelablepersonalizado. Este es el primer paso para proporcionar transparencia adicional respecto de lo que en realidad guarda Fragments (I93807, b/207158202).- Los resultados configurados mediante las APIs de Fragment Result que aún no se entregaron ahora se guardan por separado del estado interno de
FragmentManager. Esto permitirá una transparencia adicional sobre los resultados que se guardan como parte del estado de la instancia guardado (I6ea12, b/207158202).
Versión 1.5.0-alpha05
6 de abril de 2022
Se lanzaron androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 y androidx.fragment:fragment-testing:1.5.0-alpha05. La versión 1.5.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Se dio de baja el
setHasOptionsMenu()deFragment. Para administrar los menús y sus elementos de menú, se deben usar las nuevas APIs de menú en función de las notas de la versión de Fragment1.5.0-alpha04(I7b4b4, b/226438239).
Versión 1.5.0-alpha04
23 de marzo de 2022
Se lanzaron androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 y androidx.fragment:fragment-testing:1.5.0-alpha04. La versión 1.5.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Dejaron de estar disponibles las APIs de Fragment para proporcionar un menú al elemento
ActionBarde tu actividad, ya que vinculan estrechamente tu fragmento con tu actividad y no se pueden probar de forma aislada. Las APIs deMenuHostyMenuProviderque se agregaron en Activity1.4.0-alpha01brindan una plataforma de API equivalente apta para ciclos de vida que se puede probar y que los fragmentos deben usar (I50a59, I20758).
Correcciones de errores
SavedStateViewFactoryahora admite el uso deCreationExtras, incluso cuando se inicializó con unSavedStateRegistryOwner. Si se proporcionan elementos adicionales, se ignoran los argumentos inicializados (I6c43b, b/224844583).
Versión 1.5.0-alpha03
23 de febrero de 2022
Se lanzaron androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 y androidx.fragment:fragment-testing:1.5.0-alpha03. La versión 1.5.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Ahora puedes transferir
CreationExtrasa las funcionesby viewModels()yby activityViewModels()(Ibefe7, b/217601110).
Cambios en el comportamiento
DialogFragmentahora usaComponentDialogcomo el diálogo predeterminado que muestraonCreateDialog()(If3784, b/217618170).
Versión 1.5.0-alpha02
9 de febrero de 2022
Lanzamiento de androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 y androidx.fragment:fragment-testing:1.5.0-alpha02. La versión 1.5.0-alpha02 contiene estas confirmaciones.
Nuevas funciones
FragmentStrictModeahora permite que fragmentos privados de terceros omitan penalizaciones por incumplimiento específicas usandoallowViolation()con el nombre de clase (I8f678).
Versión 1.5.0-alpha01
26 de enero de 2022
Lanzamiento de androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 y androidx.fragment:fragment-testing:1.5.0-alpha01. La versión 1.5.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
Fragmentahora se integra con ViewModel CreationExtras, que se introdujo como parte de Lifecycle2.5.0-alpha01(I3060b, b/207012585).
Correcciones de errores
- A partir de Fragment
1.4.1:FragmentContainerViewya no arroja una excepción de estado ilegal cuando los IDs de vista que se generan desde XML tienen valores negativos (Ic185b, b/213086140). - A partir de Fragment
1.4.1: Cuando usas una lambdaownerProducerpersonalizada con la función diferidaby viewModels(), se usarádefaultViewModelProviderFactoryde ese propietario, si no se proporciona unViewModelProvider.Factorypersonalizado, en lugar de usar siempre la fábrica de este fragmento (I56170, b/214106513). - Se corrigió una falla que se producía cuando se intentaba acceder a un objeto
ViewModelpor primera vez desde una devolución de llamadaregisterForActivityResult()de un elementoFragment(Iea2b3).
Versión 1.4
Versión 1.4.1
26 de enero de 2022
Lanzamiento de androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 y androidx.fragment:fragment-testing:1.4.1. La versión 1.4.1 contiene estas confirmaciones.
Correcciones de errores
FragmentContainerViewya no arroja una excepción de estado ilegal cuando los IDs de vista que se generan a partir de XML tienen valores negativos (Ic185b, b/213086140).- Cuando usas una lambda
ownerProducerpersonalizada con la función diferidaby viewModels(), se usarádefaultViewModelProviderFactoryde ese propietario, si no se proporciona unaViewModelProvider.Factorypersonalizada, en lugar de usar siempre la fábrica de este fragmento (I56170, b/214106513).
Versión 1.4.0
17 de noviembre de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 y androidx.fragment:fragment-testing:1.4.0. La versión 1.4.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.3.0
- Las APIs de
FragmentStrictModebrindan comprobaciones de tiempo de ejecución que te permiten verificar que tu app o las bibliotecas de las que dependes no llamen a APIs de fragmentos que dejaron de estar disponibles. Cuando se detecta una infracción, puedes imprimir un mensaje de registro, activar tu propio objeto de escucha personalizado o cerrar la app. LaFragmentStrictMode.Policyque controla las comprobaciones que están habilitadas y las "sanciones" que se activan se puede configurar en unFragmentManagera través del nuevo métodosetStrictModePolicy(). Esa política se aplica a eseFragmentManagery de forma transitiva a cualquier administrador de fragmentos secundario que no establezca su propia política única. Consulta StrictMode para fragmentos. Ahora,
FragmentContainerViewproporciona un métodogetFragment()que muestra el fragmento que se agregó al contenedor más recientemente. Esta vista usa la misma lógica quefindFragmentById()con el ID deFragmentContainerView, pero permite encadenar la llamada.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenarioahora implementaCloseable, lo que te permite usarlo con el métodousede Kotlin o con try-with-resources.Se agregó
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}para especificar si se debe habilitar la animación de transición de Activity estándar tomada de tu tema en la transición de Fragments.Se quitó la API experimental de
FragmentManager.enableNewStateManager(boolean), y ahora el nuevo administrador de estado es la única opción disponible.
Varias pilas de actividades
FragmentManager mantiene una pila de actividades compuesta por transacciones de fragmentos que usaban addToBackStack(). Esto te permite revertir esas transacciones y regresar al estado anterior con los mecanismos para guardar el estado con fragmentos a fin de que tus fragmentos puedan restablecer su estado correctamente.
En esta versión, se amplían estos mecanismos mediante tres APIs de FragmentManager nuevas: saveBackStack(String name), restoreBackStack(String name) y clearBackStack(String name). Estas APIs usan el mismo name que addToBackStack() para guardar el estado de FragmentTransaction y el de cada fragmento que se agregó en esas transacciones. Además, te permiten restablecer más tarde esas transacciones y sus fragmentos con los estados intactos. Esto te permite "intercambiar" entre varias pilas de actividades guardando la actual y restableciendo una pila guardada.
saveBackStack() funciona de manera similar a popBackStack() por el hecho de que es asíncrona y que da como resultado la reversión del nombre de todas las transacciones de fragmentos a ese específico, además de destruir y quitar cualquier fragmento agregado. Sin embargo, tiene algunas diferencias:
saveBackStack()es siempre inclusiva.- A diferencia de
popBackStack(), que revertirá todas las transacciones de la pila de actividades si no se encuentra el nombre especificado en ella o si se proporciona un nombre nulo,saveBackStack()no hace nada si no confirmas previamente una transacción de fragmento usandoaddToBackStack()con ese nombre no nulo específico. - Se guarda el estado de todos los fragmentos agregados de esas transacciones. Esto significa que se almacena el estado de la vista de cada fragmento, se llama al
onSaveInstanceState()de cada fragmento y se restablece ese estado, y se retiene cualquier instancia deViewModelasociada con esos fragmentos (y no se llama aonCleared()en ellos).
Las transacciones de fragmentos que se pueden usar con saveBackStack() deben cumplir con estos criterios específicos:
- Toda transacción de fragmentos debe usar
setReorderingAllowed(true)para garantizar que las transacciones se puedan restablecer como una única operación atómica. - El conjunto de transacciones guardadas debe ser independiente (es decir, estas no deben hacer referencia explícitamente a ningún fragmento fuera de ese conjunto) para garantizar que se puedan restablecer las transacciones en cualquier momento, sin importar los cambios que se hagan a la pila de actividades en el tiempo de intervención.
- Ningún fragmento guardado puede retenerse o tener un fragmento retenido en su conjunto de transición de fragmentos secundarios para garantizar que el
FragmentManagerno muestre ninguna referencia a fragmentos guardados después de que se guarde la pila de actividades.
De manera similar a saveBackStack(), restoreBackStack() y clearBackStack(), que restablecerían o borrarían respectivamente una pila de actividades que se haya guardado antes, no realizan ninguna acción si no llamaste primero a saveBackStack() con el mismo nombre.
Para obtener más información, consulta Varias pilas de actividades: un análisis detallado.
Versión 1.4.0-rc01
3 de noviembre de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-rc01 sin modificaciones desde Fragment 1.4.0-beta01. La versión 1.4.0-rc01 contiene estas confirmaciones.
Versión 1.4.0-beta01
27 de octubre de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 y androidx.fragment:fragment-testing:1.4.0-beta01. La versión 1.4.0-beta01 contiene estas confirmaciones.
Correcciones de errores
- Los fragmentos superiores ahora enviarán
onHiddenChanged()a toda su jerarquía antes de iniciar su propia devolución de llamada (Iedc20, b/77504618). - El teclado se cerrará automáticamente cuando se pase de un fragmento con un teclado abierto a un fragmento con una vista de reciclador (I8b842, b/196852211).
DialogFragmentahora usasetReorderingAllowed(true)para todas las transacciones que crea cuando llamas ashow(),showNow()odismiss()(Ie2c14).- La advertencia de lint que era demasiado larga de
DetachAndAttachFragmentInSameFragmentTransactionse acortó aDetachAndAttachSameFragment(e9eca3).
Versión 1.4.0-alpha10
29 de septiembre de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 y androidx.fragment:fragment-testing:1.4.0-alpha10. La versión 1.4.0-alpha10 contiene estas confirmaciones.
Lint
- Se agregó la advertencia de lint
DetachAndAttachFragmentInSameFragmentTransactionpara detectar la llamada adetach()yattach()en el mismoFragment, en el mismoFragmentTransaction. Ya que estas operaciones complementarias se cancelan entre sí cuando se realizan en la misma transacción, deben dividirse en transacciones distintas para realizar cualquier acción (aosp/1832956, b/200867930) - Se agregó el error de lint
FragmentAddMenuProviderpara corregir los usos del ciclo de vida de Fragment al ciclo de vida de la vista de Fragment cuando se usa la APIaddMenuProviderdeMenuHost. (aosp/1830457, b/200326272)
Actualizaciones de la documentación
- El mensaje que indica que las APIs ahora están a cargo de las APIs de Activity Result, es decir,
startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissionsyonRequestPermissionsResult, se expandieron con más detalles (cce80f) - Se expandió el mensaje de baja de
onActivityCreated()paraFragmentyDialogFragmentcon más detalles. (224db4)
Versión 1.4.0-alpha09
15 de septiembre de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 y androidx.fragment:fragment-testing:1.4.0-alpha09. La versión 1.4.0-alpha09 contiene estas confirmaciones.
Nuevas funciones
- Ahora, puedes llamar a
clearBackStack(name)para borrar cualquier estado que se guardó anteriormente consaveBackStack(name). (I70cd7)
Cambios en la API
- La clase
FragmentContainerViewse reescribió en Kotlin para garantizar que la funcióngetFragmentrespete la nulabilidad de manera correcta. (If694a, b/189629145) - Ahora, FragmentStrictMode está escrito en Kotlin. (I11767, b/199183506)
Correcciones de errores
- Se solucionó un problema por el que no se borraba correctamente el estado de un objeto Fragment que se agregaba con
setReorderingAllowed(true)y que se quitaba de inmediato antes de ejecutar las transacciones pendientes. (I8ccb8)
Versión 1.4.0-alpha08
1 de septiembre de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 y androidx.fragment:fragment-testing:1.4.0-alpha08. La versión 1.4.0-alpha08 contiene estas confirmaciones.
Correcciones de errores
- Se mejoró la comprobación de lint de
UseRequireInsteadOfGetpara controlar mejor los paréntesis redundantes. (I2d865) - Se mejoró la comprobación de lint de
UseGetLayoutInflaterpara controlar casos extremos adicionales. (Ie5423)
Versión 1.4.0-alpha07
18 de agosto de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 y androidx.fragment:fragment-testing:1.4.0-alpha07 sin cambios notables. La versión 1.4.0-alpha07 contiene estas confirmaciones.
Versión 1.4.0-alpha06
4 de agosto de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 y androidx.fragment:fragment-testing:1.4.0-alpha06. La versión 1.4.0-alpha06 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema relacionado con varias pilas de actividades al intercambiar rápidamente entre las pilas de actividades que aparecían como
IllegalStateExceptionmientras se restauraba unaFragmentTransactiono como una segunda copia de un fragmento que aparece. (I9039f) - Se corrigió un problema por el que
FragmentManagermantenía una copia del estado que se guardó antes a través desaveBackStack(), incluso después de que se restableció ese estado. (Ied212) - El método
dismissAllowingStateLoss()deDialogFragmentya no falla cuando lo llamas después de que se guarda el estado cuando se agrega específicamente el DialogFragment a través del métodoshow(FragmentTransaction, String). (I84422)
Versión 1.4.0-alpha05
21 de julio de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 y androidx.fragment:fragment-testing:1.4.0-alpha05. La versión 1.4.0-alpha05 contiene estas confirmaciones.
Correcciones de errores
- Desde Fragment
1.3.6: La vista de Fragment ahora se configura correctamente enGONEcuando se usahide()y la vista raíz tiene el valortransitionGroup=”true”configurado. (aosp/1766655, b/193603427) - A partir de Fragment
1.3.6:FragmentActivityahora desbloquea el estado guardado como la primera operación en las devoluciones de llamada del ciclo de vida que anula. (I6db7a)
Actualización de dependencia
- A partir de Fragment
1.3.6: Los fragmentos ahora dependen de Activity1.2.4(I3a66c).
Versión 1.4.0-alpha04
30 de junio de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 y androidx.fragment:fragment-testing:1.4.0-alpha04. La versión 1.4.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Ahora,
FragmentManagerusaSavedStateRegistry, de forma interna, para guardar su estado. Los métodossaveAllState()yrestoreSavedState()también dejaron de estar disponibles enFragmentController. Si usasFragmentControllerpara alojar fragmentos fuera deFragmentActivity, debes hacer queFragmentHostCallbacksimplementeSavedStateRegistryOwner(Iba68e, b/188734238)
Correcciones de errores
- Se solucionó un problema por el que fallaba la llamada a
saveBackStack()como parte de la compatibilidad con varias pilas de actividades cuando se realizaba al mismo tiempo que se ejecutabaFragmentTransactionque usabareplace(). (I73137) - Se corrigió
NullPointerException, que ocurría después de restablecer, de forma manual, una pila de actividades guardada que contenía varias transacciones cuando se usaba la API derestoreBackStack()para admitir varias pilas de actividades. De esta manera, también se solucionó un problema por el que no se verificabasetReorderingAllowed(true)para todas las transacciones. (I8c593) - Se corrigió un problema por el que
FragmentManagerintentaba restablecer de manera incorrecta el estado de los fragmentos que se guardaba anteriormente, incluso después de que estos se quitaran deFragmentManager, lo que provocaba que el estado guardado creciera continuamente con el paso del tiempo. (I1fb8e)
Versión 1.4.0-alpha03
16 de junio de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 y androidx.fragment:fragment-testing:1.4.0-alpha03. La versión 1.4.0-alpha03 contiene estas confirmaciones.
Nuevas funciones
- Todas las clases
Violationde StrictMode de Fragment se actualizaron con mensajes de error más detallados que explican los detalles del incumplimiento. (b/187871638)FragmentTagUsageViolationahora contiene un mensaje de error más detallado, en el que se indica el contenedor principal es al que se le habría agregado el fragmento. (Ic33a7)WrongFragmentContainerViolationahora tiene un mensaje de error más detallado, que incluye el contenedor al que se estaba agregando el fragmento. (Ib55f8)- Las clases de caso de uso de
TargetFragmentUsageViolationahora tienen mensajes de error más detallados para incluir el fragmento que causa el incumplimiento y cualquier otra información contenida. (Icc6ac) - Las clases que extienden
RetainInstanceUsageViolationahora tienen mensajes de error más detallados, que incluyen el fragmento que causa el incumplimiento. (I6bd55) FragmentReuseViolationahora tiene un mensaje de error más detallado, que incluye el ID anterior del fragmento. (I28ce2)SetUserVisibleHintViolationahora tiene un mensaje de error más detallado, que incluye en qué se configuró la sugerencia visible para el usuario. (Ib2d5f)
Cambios en el comportamiento
- Se revirtió la restricción para llamar a
fitsSystemWindowsen unFragmentContainerView; ya no se bloquea la app. (6b8ddd, b/190622202)
Correcciones de errores
- A partir de Fragment
1.3.5: Se corrigió una regresión en las transiciones de elementos compartidos que se introdujo en Fragment1.3.4mediante aosp/1679887. Los fragmentos ahora controlan correctamente los grupos de transición (ya sean establecidos directamente a través detransitionGroup="true", o bien indirectamente a través detransitionNameobackground) y los elementos compartidos ya no arrojaránIndexOutOfBoundsException. (I16484, b/188679569, b/188969304) FragmentManagerya no fallará cuando intentes ocultar un fragmento de eliminación. (I573dd, b/183634730)- La comprobación de lint
OnCreateDialogIncorrectCallbackya no fallará cuando se evalúe una variable de nivel superior. (0a9efa, b/189967522)
Versión 1.4.0-alpha02
2 de junio de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 y androidx.fragment:fragment-testing:1.4.0-alpha02. La versión 1.4.0-alpha02 contiene estas confirmaciones.
Nuevas funciones
FragmentStrictModeahora siempre registrará incumplimientos del registro cuando este se habilite mediante el elementoFragmentManager, independientemente de la política de modo estricto que se use. (I02df6, b/187872638)FragmentStrictModeahora admite la exención de determinadas clases deFragmentde los elementosViolationdel modo estricto, lo que permite que esa clase omita cualquier penalización. (Ib4e5d, b/184786736)Se expandió la clase
FragmentStrictModeViolationpara agregar información de estructura basada en cada incumplimiento. Esto te permite verificar con exactitud la causa del incumplimiento junto con el fragmento infractor (If5118, b/187871150). CadaViolationcontiene lo siguiente:WrongFragmentContainerViolationahora contiene elViewGroupal que se intentaba agregarFragment. (I83c75, b/187871150)TargetFragmentUsageViolationse amplió aSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolationyGetTargetFragmentRequestCodeUsageViolation, ySetTargetFragmentUsageViolationcontiene el fragmento de destino y el código de solicitud. (I741b4, b/187871150)SetUserVisibleHintViolationahora contiene el valor booleano que se pasa asetUserVisibleHint(). (I00585, b/187871150)FragmentTagUsageViolationahora contiene el ViewGroup en el que la etiqueta<fragment>intentaba aumentar un fragmento.(I5dbbc, b/187871150)FragmentReuseViolationahora contiene el ID único de la instancia anterior delFragmentque causa la infracción. (I0544d, b/187871150)RetainInstanceUsageViolationahora es abstracto y tiene dos subclases,SetRetainInstanceUsageViolationyGetRetainInstanceUsageViolation, que representan los dos casos del tipo de incumplimiento. (Ic81e5, b/187871150)
Cambios en el comportamiento
FragmentContainerViewahora arroja una excepción cuando se intenta cambiar el atributofitsSystemWindowde manera programática o a través de XML. Las vistas de cada fragmento individual deben controlar las inserciones. (Ie6651, b/187304502)
Versión 1.4.0-alpha01
18 de mayo de 2021
Lanzamiento de androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 y androidx.fragment:fragment-testing:1.4.0-alpha01. La versión 1.4.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
Ahora,
FragmentContainerViewproporciona un métodogetFragment()que muestra el fragmento que se agregó al contenedor más recientemente. Esta vista usa la misma lógica quefindFragmentById()con el ID deFragmentContainerView, pero permite encadenar la llamada. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerSe agregó
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}para especificar si se debe habilitar la animación de transición de Activity estándar tomada de tu tema en la transición de Fragments. (I46652)
Varias pilas de actividades
FragmentManager mantiene una pila de actividades compuesta por transacciones de fragmentos que usaban addToBackStack(). Esto te permite revertir esas transacciones y regresar al estado anterior con los mecanismos para guardar el estado con fragmentos a fin de que tus fragmentos puedan restablecer su estado correctamente.
En esta versión, se amplían estos mecanismos mediante dos API de FragmentManager nuevas: saveBackStack(String name) y restoreBackStack(String name). Estas APIs usan el mismo name que addToBackStack() para guardar el estado de FragmentTransaction y el de cada fragmento que se agregó en esas transacciones. Además, te permiten restablecer más tarde esas transacciones y sus fragmentos con los estados intactos. Esto te permite "intercambiar" entre varias pilas de actividades guardando la actual y restableciendo una pila guardada.
saveBackStack() funciona de manera similar a popBackStack() por el hecho de que es asíncrona y que da como resultado la reversión del nombre de todas las transacciones de fragmentos a ese específico, además de destruir y quitar cualquier fragmento agregado. Sin embargo, tiene algunas diferencias:
saveBackStack()es siempre inclusiva.- A diferencia de
popBackStack(), que revertirá todas las transacciones de la pila de actividades si no se encuentra el nombre especificado en ella o si se proporciona un nombre nulo,saveBackStack()no hace nada si no confirmas previamente una transacción de fragmento usandoaddToBackStack()con ese nombre no nulo específico. - Se guarda el estado de todos los fragmentos agregados de esas transacciones. Esto significa que se almacena el estado de la vista de cada fragmento, se llama al
onSaveInstanceState()de cada fragmento y se restablece ese estado, y se retiene cualquier instancia deViewModelasociada con esos fragmentos (y no se llama aonCleared()en ellos).
Las transacciones de fragmentos que se pueden usar con saveBackStack() deben cumplir con estos criterios específicos:
- Toda transacción de fragmentos debe usar
setReorderingAllowed(true)para garantizar que las transacciones se puedan restablecer como una única operación atómica. - El conjunto de transacciones guardadas debe ser independiente (es decir, estas no deben hacer referencia explícitamente a ningún fragmento fuera de ese conjunto) para garantizar que se puedan restablecer las transacciones en cualquier momento, sin importar los cambios que se hagan a la pila de actividades en el tiempo de intervención.
- Ningún fragmento guardado puede retenerse o tener un fragmento retenido en su conjunto de transición de fragmentos secundarios para garantizar que el
FragmentManagerno muestre ninguna referencia a fragmentos guardados después de que se guarde la pila de actividades.
De forma similar a saveBackStack(), restoreBackStack() no hace nada si no llamas a saveBackStack() previamente con el mismo nombre. (b/80029773)
FragmentStrictMode
Las APIs de FragmentStrictMode brindan comprobaciones de tiempo de ejecución que te permiten verificar que tu app o las bibliotecas de las que dependes no llamen a APIs de fragmentos que dejaron de estar disponibles. Cuando se detecta una infracción, puedes imprimir un mensaje de registro, activar tu propio objeto de escucha personalizado o cerrar la app. La FragmentStrictMode.Policy que controla las comprobaciones que están habilitadas y las "sanciones" que se activan se puede configurar en un FragmentManager a través del nuevo método setStrictModePolicy(). Esa política se aplica a ese FragmentManager y de forma transitiva a cualquier administrador de fragmentos secundario que no establezca su propia política única. (#123, #131, #150, b/143774122)
detectFragmentReuse()detecta si una instancia deFragment, que se había quitado, se está volviendo a agregar a unFragmentManager. Nunca debes interactuar con una instancia deFragmentni mantener una referencia a ella después de que se haya destruido y quitado de unFragmentManager. (#142, b/153738653)detectFragmentTagUsage()detecta cuándo usas la etiqueta<fragment>en tu XML de diseño. Debes usarFragmentContainerViewsiempre que aumentes fragmentos como parte de tu diseño. (#141, b/153738235)detectWrongFragmentContainer()detecta cuándo agregas un fragmento a un contenedor que no sea unaFragmentContainerView. Siempre debes usarFragmentContainerViewcomo el contenedor de fragmentos en tu diseño. (#146, b/181137036)detectRetainInstanceUsage()detecta cuándo usas las APIs desetRetainInstance()ogetRetainInstance(), que dejaron de estar disponibles. (#140, b/153737954)detectSetUserVisibleHint()detecta cuándo usas la APIsetUserVisibleHint()que dejó de estar disponible. (#136, b/153738974)detectTargetFragmentUsage()detecta cuándo usas las APIssetTargetFragment(),getTargetFragment()ogetTargetRequestCode(), que dejaron de estar disponibles (#139, b/153737745)
Cambios en la API
- Se quitó la API experimental de
FragmentManager.enableNewStateManager(boolean), y ahora el nuevo administrador de estado es la única opción disponible. (I90036, b/162776418) FragmentScenarioahora implementaCloseable, lo que te permite usarlo con el métodousede Kotlin o con try-with-resources. (#121, b/143774122)
Nuevas comprobaciones de lint
- La comprobación de lint
UseGetLayoutInflaterahora advierte cuando se usaLayoutInflater.from(Context)en unDialogFragment; siempre debes usar el métodogetLayoutInflater()del fragmento de diálogo para obtener elLayoutInflateradecuado. (#156, b/170781346) - La comprobación de lint
DialogFragmentCallbacksDetectorahora advierte cuando se llama asetOnCancelListenerosetOnDismissListeneren el métodoonCreateDialog()de unDialogFragment; estos objetos de escucha son propiedad delDialogFragment, por lo que debes anularonCancel()yonDismiss()para recibir estas devoluciones de llamada. (#171, b/181780047, b/187524311)
Correcciones de errores
- A partir de Fragment 1.3.4: Se corrigió una regresión introducida en Fragment
1.3.3cuando se usa la API deViewTreeViewModelStoreOwner.get()conViewModelProvidero el método de Jetpack Compose deviewModel()en un fragmento. Estos casos de uso ahora utilizan correctamente el elementoViewModelProvider.Factoryque proporciona tu fragmento si anulagetDefaultViewModelProviderFactory()(como hacen los fragmentos@AndroidEntryPointanotados cuando usan Hilt). Si no anulas ese método, se creará como fábrica predeterminada unaSavedStateViewModelFactoryque guarda y restablece su estado junto con la vista del fragmento. (I5cbfa, b/186097368) - A partir de Fragment 1.3.4: Cuando se usa
FragmentContainerViewen la API 29, ya no se despacharán las inserciones de manera indefinida, por lo que se solucionan los problemas con las instanciasBottomNavigationBaryFloatingActionButton. (I1bb78, b/186012452) - A partir de Fragment 1.3.4: Ahora puedes recuperar tu elemento Parcelable del paquete de resultados de fragmentos después de la finalización del proceso. (I65932, b/187443158)
- A partir de Fragment 1.3.4: Cuando haces una transición de elementos compartidos en un ViewGroup, esta se llevará a cabo correctamente cuando ViewGroup tenga el elemento
transitionGroupconfigurado como falso (I99675)
Contribución externa
- Agradecemos a simonschiller por hacer que
FragmentScenarioimplementeCloseable. (#121, b/143774122) - Agradecemos a simonschiller por haber agregado toda la API de
FragmentStrictModepara esta versión. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) - Agradecemos a tatocaster por haber agregado la comprobación de lint
UseGetLayoutInflater. (#156, b/170781346) - Agradecemos a tatocaster por haber agregado la comprobación de lint
DialogFragmentCallbacksDetector. (#171, b/181780047)
Versión 1.3
Versión 1.3.6
21 de julio de 2021
Lanzamiento de androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 y androidx.fragment:fragment-testing:1.3.6. La versión 1.3.6 contiene estas confirmaciones.
Correcciones de errores
- Desde Fragment
1.4.0-alpha03:FragmentManagerya no fallará cuando intentes ocultar un fragmento que lo quita. (I573dd, b/183634730) - La vista de Fragment ahora se configura correctamente en
GONEcuando se usahide()y la vista raíz tiene el valortransitionGroup=”true”configurado. (aosp/1766655, b/193603427) FragmentActivityahora desbloquea el estado guardado como la primera operación en las devoluciones de llamada del ciclo de vida que anula. (I6db7a)
Actualización de dependencia
- A partir de Fragment
1.3.6: Los fragmentos ahora dependen de Activity1.2.4(I3a66c).
Versión 1.3.5
16 de junio de 2021
Lanzamiento de androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 y androidx.fragment:fragment-testing:1.3.5. La versión 1.3.5 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una regresión en las transiciones de elementos compartidos que se introdujo en Fragment
1.3.4mediante aosp/1679887. Los fragmentos ahora controlan correctamente los grupos de transición (ya sean establecidos directamente a través detransitionGroup="true", o bien indirectamente a través detransitionNameobackground) y los elementos compartidos ya no arrojaránIndexOutOfBoundsException. (I16484, b/188679569, b/188969304)
Versión 1.3.4
18 de mayo de 2021
Lanzamiento de androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 y androidx.fragment:fragment-testing:1.3.4. La versión 1.3.4 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una regresión introducida en Fragment
1.3.3cuando se utiliza la API deViewTreeViewModelStoreOwner.get()conViewModelProvidero el método de Jetpack Compose deviewModel()en un fragmento cuando se usa Hilt. Estos casos de uso ahora utilizan correctamente el elementoViewModelProvider.Factoryque proporciona tu fragmento si anulagetDefaultViewModelProviderFactory()(como hacen los fragmentos@AndroidEntryPointanotados). Si no anulas ese método, se creará como fábrica predeterminada unaSavedStateViewModelFactoryque guarda y restablece su estado junto con la vista del fragmento. (I5cbfa, b/186097368) - Cuando se usa
FragmentContainerViewen la API 29, ya no se despacharán las inserciones de manera indefinida, por lo que se solucionan los problemas con las instanciasBottomNavigationBaryFloatingActionButton. (I1bb78, b/186012452) - Ahora puedes recuperar tu elemento Parcelable del paquete de resultados de fragmentos después de la finalización del proceso. (I65932, b/187443158)
- Cuando haces una transición de elementos compartidos en un ViewGroup, esta se llevará a cabo correctamente cuando ViewGroup tenga el elemento
transitionGroupconfigurado como falso. (I99675)
Versión 1.3.3
21 de abril de 2021
Lanzamiento de androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 y androidx.fragment:fragment-testing:1.3.3. La versión 1.3.3 contiene estas confirmaciones.
Nuevas funciones
- Ahora, usar
SavedStateViewModelFactoryfunciona cuando se utiliza conSavedStateRegistryOwner, que se muestra medianteViewTreeSavedStateRegistryOwner.get()con la View de Fragment. (I21acf, b/181577191)
Correcciones de errores
- Se corrigió una regresión introducida en Fragment
1.3.2que causaba que las animacionespopEnterno se ejecutaran cuando se mostraba un elementoFragmentTransactionque incluía una operaciónsetPrimaryNavFragment, como las que usabaNavHostFragment. (I38c87, b/183877426) - Ahora,
FragmentContainerViewgarantiza que cadaFragmentreciba un conjunto nuevo deWindowInsets, lo que asegura que cada fragmento ahora pueda consumir, de forma independiente, las inserciones. (I63f68, b/172153900) - Ahora,
DialogFragmentprocesa, de manera correcta, los casos en los que se agrega un fragmento secundario a un contenedor que tiene el mismo ID que un contenedor de tu claseDialogpersonalizada, lo que corrige problemas de jerarquía de vistas cuando se vuelven a utilizar ID que los diálogos ya usaron de manera interna, comoBottomSheetDialog. (Ie6279, b/180021387) - Ahora,
FragmentManager.dump()aplica sangría, de manera correcta, en el primer fragmento de la lista de fragmentos activos. (If5c33, b/183705451)
Nuevas correcciones de errores del administrador de estados
- Ahora, el nuevo administrador de estado del fragmento controla, de manera correcta, las transiciones de salida con operaciones hide. (I9e4de, b/184830265)
Versión 1.3.2
24 de marzo de 2021
Lanzamiento de androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 y androidx.fragment:fragment-testing:1.3.2. La versión 1.3.2 contiene estas confirmaciones.
Nuevas correcciones de errores del administrador de estados
- Cuando se ejecutan las operaciones
popBackStack()ycommit()juntas, la última operación ahora establecerá la dirección para todas las animaciones en lugar de ejecutar algunas animaciones emergentes y algunas animaciones de entrada. (I7072e, b/181142246) - A las vistas dentro de la jerarquía de los elementos compartidos ya no se les borrará el nombre de la transición cuando se realiza una transición de elementos compartidos. (I4d4a6, b/179934757)
Actualizaciones de dependencias
- Fragment ahora depende de la Activity versión 1.2.2, lo que corrige un problema con la comprobación de lint de
InvalidFragmentVersionForActivityResultde Activity cuando se usa Fragment versión 1.3.1 o posteriores. - Fragment ahora depende de Lifecycle versión 2.3.1.
Versión 1.3.1
10 de marzo de 2021
Lanzamiento de androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 y androidx.fragment:fragment-testing:1.3.1. La versión 1.3.1 contiene estas confirmaciones.
Nuevas funciones
- Los diálogos dentro de un
DialogFragmentahora pueden obtener acceso a los propietarios de ViewTree mediante su DecorView, lo que garantiza queDialogFragmentse puede usar conComposeView. (Ib9290, b/180691023)
Correcciones de errores
- Los fragmentos aumentados en una actividad
RESUMEDque ya usaba FragmentContainerView ahora se muestran correctamente después de un cambio de configuración. (Ie14c8, b/180538371) - Ya no hay un
}adicional al final del fragmentotoString(). (I54705, b/177761088) - Los métodos anulados en FragmentActivity ahora heredan correctamente el método base javaDoc. (I736ce, b/139548782)
- Los documentos de
setFragmentResulty desetFragmentResultListeneractualizaron los documentos de parámetros a fin de reflejar que ya no aceptan valores nulos. (I990ba, (b/178348386))
Nuevas correcciones de errores del administrador de estados
- Se corrigió una fuga de memoria en fragmentos causada por
mFocusedView. (IB4e9e, b/179925887) - Los fragmentos ahora llaman de manera correcta a
onCreateOptionsMenucuando se usan las transacciones mostrar/ocultar. (I8bce8, b/180255554) - Los fragmentos secundarios con transiciones que comienzan antes de que el fragmento se separe ahora llegarán correctamente a
RESUMED. (Ic11e6, b/180825150). - Los fragmentos aumentados que usan la etiqueta
<fragment>ahora siempre lo harán enRESUMED. (I452ac, (I9fa49)
Actualizaciones de dependencias
- El fragmento 1.3.1 depende de la actividad
1.2.1. (I557b9)
Versión 1.3.0
10 de febrero de 2021
Lanzamiento de androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 y androidx.fragment:fragment-testing:1.3.0. La versión 1.3.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.2.0
- Nuevo administrador de estado: Una reescritura importante de objetos internos de
FragmentManagercorrigió numerosos problemas que afectaban el envío de eventos de ciclos de vida, animaciones y transiciones. Además, corrigió la manera en la que se manejaban los fragmentos pospuestos. Integración de la API de Activity Result: Se agregó compatibilidad para la API de
ActivityResultRegistryque se introdujo en Activity1.2.0a fin de controlarstartActivityForResult()+onActivityResult(), así como flujosrequestPermissions()+onRequestPermissionsResult()sin anular métodos en tu Fragment, además de proporcionar hooks para probarlos. Consulta la información actualizada en Cómo obtener un resultado de una actividad.- Esta versión corrige una serie de problemas relacionados con códigos de solicitud no válidos y el despacho de solicitudes de permisos que evitan que la API de Activity Result funcione en versiones anteriores de
FragmentActivity. Debes actualizar a Fragment 1.3.0 para usar las API de Activity Result enFragmentActivityoAppCompatActivity.
- Esta versión corrige una serie de problemas relacionados con códigos de solicitud no válidos y el despacho de solicitudes de permisos que evitan que la API de Activity Result funcione en versiones anteriores de
API de Fragment Result: Se agregó compatibilidad para pasar resultados entre dos fragmentos a través de nuevas API en
FragmentManager. Esta opción funciona para fragmentos de jerarquía (superior/secundario), DialogFragments y fragmentos en Navigation, y garantiza que los resultados solo se envíen a tu Fragment cuando sea al menosSTARTED. Las APIs de fragmentos de destino dejaron de estar disponibles y se reemplazaron por estas nuevas APIs. Consulta Cómo obtener resultados con la API de Fragment Result.FragmentOnAttachListener: Dejó de estar disponible la devolución de llamada deonAttachFragment()enFragmentActivityyFragment. Se agregó unFragmentOnAttachListenernuevo para brindar una alternativa más flexible, que permite la delegación deonAttachFragment()a objetos de escucha separados que pueden probarse, además de admitir que se agregue un objeto de escucha a FragmentManagers distinto de tu FragmentManager secundario directo.Mejoras de
FragmentScenario: La claseFragmentScenariodel artefactofragment-testingse volvió a escribir en Kotlin y recibió varias mejoras:- El elemento
FragmentScenarioahora usa el objetosetMaxLifecycle()para implementar el parámetromoveToState(), lo que garantiza un comportamiento coherente en todos los niveles de API y separa el estado de Fragment del elemento Activity subyacente. - El objeto
FragmentScenarioahora admite la configuración de un elementoLifecycle.Stateinicial para admitir la declaración del estado del fragmento antes de moverlo a cadaLifecycle.Statepor primera vez. - Ahora hay una alternativa a la API de
FragmentScenariodel objetoonFragmenten forma del métodowithFragmentde extensión reificada de Kotlin que te permite mostrar un valor. Cabe destacar que vuelve a mostrar las excepciones generadas en el bloque especificado.
- El elemento
Compatibilidad con
ViewTree:Fragmentahora admite las API deViewTreeLifecycleOwner.get(View)ViewTreeViewModelStoreOwner.get(View)yViewTreeSavedStateRegistryOwnerque se agregaron en Lifecycle2.3.0y SavedState1.1.0, de manera que se mostrará Fragment comoViewModelStoreOwner, y aSavedStateRegistryOwneryLifecycleOwnervinculado al Lifecycle de vista de los fragmentos cuando se usaViewdentro deFragment.Cambios en la animación de
TRANSIT_: Los efectos predeterminados de los fragmentos,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEyTRANSIT_FRAGMENT_FADE, ahora usanAnimatoren lugar deAnimation. Los recursos utilizados para compilar estos animadores ahora son privados.Baja de
setRetainInstance(): Dejó de estar disponible el métodosetRetainInstance()de Fragment. Con la introducción de ViewModels, los desarrolladores tienen una API específica para un estado de retención que se puede asociar con gráficos de Activity, Fragment y Navigation. De esta manera, los desarrolladores pueden usar un Fragment normal sin retención y mantener el estado específico que quieren retener por separado a fin de evitar una fuente común de fugas y, al mismo tiempo, mantener las propiedades útiles de una sola creación y destrucción del estado de retención (es decir, el constructor deViewModely la devolución de llamada deonCleared()que recibe).Baja del adaptador ViewPager 1: Con la actualización de ViewPager2
1.0.0, dejaron de estar disponibles las clasesFragmentPagerAdapteryFragmentStatePagerAdapterpara interactuar conViewPager. Consulta Cómo migrar de ViewPager a ViewPager2.
Versión 1.3.0-rc02
27 de enero de 2021
Lanzamiento de androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 y androidx.fragment:fragment-testing:1.3.0-rc02. La versión 1.3.0-rc02 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema en el que aparecía un
DialogFragmentsuperior por encima de unDialogFragmentsecundario después de un cambio de configuración. Los fragmentos de diálogo secundarios ahora aparecen siempre encima de un fragmento de diálogo superior. (I30806, b/177439520) - Se corrigió un problema en el que cuando se hacía una operación
hidecon unAnimationcausaba que el fragmento oculto se actualizara al final de la animación. (I57e22, b/175417675) - Ahora, los fragmentos con transiciones agregadas antes de que la jerarquía de vistas se adjunte llegan de manera correcta a
RESUMED. (I1fc1d, b/177154873)
Nuevas correcciones de errores del administrador de estados
- Ahora, la vista
Lifecycledel fragmento procesa correctamente los casos en los que la vista del fragmento se destruye antes de queLifecyclellegue aCREATED, lo que evita excepciones que indican "no event down from INITIALIZED". (eda2bd, b/176138645). - Los fragmentos que usan
Animatorahora aparecen en el orden adecuado cuando se usaFragmentContainerView. (Id9aa3, b/176089197)
Versión 1.3.0-rc01
16 de diciembre de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 y androidx.fragment:fragment-testing:1.3.0-rc01. La versión 1.3.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Ahora
onPrepareOptionsMenu()sigue la misma lógica queonCreateOptionsMenu()y ya no se llama cuando un fragmento superior llama asetMenuVisibility(false). (Id7de8, b/173203654)
Nuevas correcciones de errores del administrador de estados
- Se corrigió una filtración y un artefacto visual cuando se agrega un fragmento con un elemento
Animationa unaFragmentContainerViewy, luego, se interrumpe esa adición con una operación emergente. (I952d8) - Se corrigió un problema en el que la vista del fragmento permanecía en la jerarquía de vistas si se la reemplazaba durante sus métodos
onCreate()oonViewCreated(). (I8a7d5) - Ahora el foco se restaura correctamente en las vistas raíz de Fragment cuando se reanudan. (Ifc84b)
- Ahora si se combinan las operaciones de objeto emergente y de reemplazo en la misma transacción de fragmentos, se mostrarán las animaciones adecuadas. (Ifd4e4, b/170328691)
Versión 1.3.0-beta02
2 de diciembre de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 y androidx.fragment:fragment-testing:1.3.0-beta02. La versión 1.3.0-beta02 contiene estas confirmaciones.
Nuevas funciones
FragmentScenariose convirtió por completo al lenguaje de Kotlin y, al mismo tiempo, mantiene la compatibilidad con la fuente y el objeto binario con las interfaces funcionales de Kotlin 1.4 paraFragmentAction(I19d31)
Cambios en el comportamiento
- Ahora, las vistas FragmentContainerView que no aumentan un fragmento con el atributo
classoandroid:namese pueden usar fuera de unaFragmentActivity. (Id4397, b/172266337) - Ahora, si se intenta establecer el ciclo de vida máximo de un fragmento en
DESTROYED, se arrojará una excepciónIllegalArgumentException. (Ie7651, b/170765622) - Ahora, si inicializas un FragmentScenario con un estado
DESTROYED, se arrojará una excepciónIllegalArgumentException. (I73590, b/170765622)
Nuevas correcciones de errores del administrador de estados
- Se solucionó un problema en el que la vista no alcanzaba su estado final si se interrumpía una transición de fragmento que usaba un
Animatoro una de las opciones deTRANSIT_FRAGMENT_. (I92426, b/169874632) - Se solucionó un problema que impedía que los fragmentos con una
Animationde salida se destruyeran correctamente. (I83d65) - Los fragmentos de salida que tienen sus efectos revertidos ahora ejecutan las acciones de cancelar y reiniciar de forma correcta con el efecto de entrada correspondiente. (I62226, b/167092035)
- Se corrigió un problema en el que no se ejecutaba el objeto
Animatorde salida de un elementohide(). (Id7ffe) - Los fragmentos ahora aparecen correctamente cuando se posponen y, luego, se inician inmediatamente. (Ie713b, b/170022857)
- Los fragmentos que quitan su vista enfocada durante una animación ya no intentarán restaurar el enfoque de la vista separada una vez que alcancen el elemento
RESUMED. (I38c65, b/172925703)
Contribución externa
FragmentFactoryahora almacena en caché las clases de fragmentos por separado para diferentes instancias deClassLoader. ¡Gracias, Simon Schiller! (#87, b/113886460)
Versión 1.3.0-beta01
1 de octubre de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 y androidx.fragment:fragment-testing:1.3.0-beta01. La versión 1.3.0-beta01 contiene estas confirmaciones.
Nuevas funciones
setMaxLifecycle()ahora admite la configuración del estadoLifecycleenINITIALIZING, siempre que el fragmento no se haya movido aCREATED. (b/159662173)
Cambios en la API
- Actualiza AndroidX para usar Kotlin 1.4. (Id6471, b/165307851, b/165300826)
Cambios en el comportamiento
- Los archivos de recursos de Fragment se establecieron correctamente como privados. (aosp/1425237)
Correcciones de errores
- Los fragmentos aumentados que usan la etiqueta
<fragment>ahora esperarán correctamente hasta que las vistas se agreguen a un contenedor antes de pasar a STARTED. (I02f4c) - Los fragmentos que son visibles y, luego, establecen
setMaxLifecycle()enCREATED, ahora ejecutan correctamente sus efectos de salida. (b/165822335) - Quitar un fragmento desconectado que no se haya agregado a la pila de actividades ya no produce una fuga de memoria. Cortesía de Nicklas Ansman Giertz. (b/166489383)
- Ahora, los fragmentos activos siempre tendrán un
FragmentManagerno nulo y los fragmentos con unFragmentManagerno nulo siempre se considerarán activos. (aosp/1422346) - Los efectos predeterminados de los fragmentos
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEyTRANSIT_FRAGMENT_FADEahora usanAnimator, en lugar deAnimation. (b/166155034)
Nuevas correcciones de errores del administrador de estados
- Los fragmentos ahora restablecen correctamente el estado del enfoque antes de comenzar la animación. (Icc256)
- Los fragmentos que solo tienen una transición de elementos compartidos ahora completan de forma correcta sus efectos especiales, lo que significa que realmente pasan a su estado final. (Iaebc7, b/166658128)
- Las vistas de fragmento ahora se quitan del contenedor antes de que se destruyan. (Id5876)
- El nuevo administrador de estado ahora quita de manera coherente la vista de fragmento saliente antes de agregar el que está ingresando. (I41a6e)
- El nuevo administrador de estado ahora respeta los cambios explícitos en la visibilidad de una vista de fragmento. Esto significa que si configuras la vista de un fragmento que está ingresando en
INVISIBLEantes de que comience la animación, esta permanecerá invisible. (b/164481490) - Los fragmentos ahora priorizan
Animatorspor sobreAnimations, lo que significa que un fragmento con ambos solo ejecutaráAnimatore ignoraráAnimation. (b/167579557) - El nuevo administrador de estado ya no hace que los fragmentos parpadeen cuando se ingresan animaciones. (b/163084315)
Problema conocido
Cuando se usa el nuevo administrador de estado, si se presiona Atrás mientras se ingresa un efecto especial en lugar de regresar al fragmento anterior, el fragmento anterior nunca se vuelve a agregar, lo que da como resultado una pantalla en blanco. (b/167259187, b/167092035, b/168442830)
Versión 1.3.0-alpha08
19 de agosto de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 y androidx.fragment:fragment-testing:1.3.0-alpha08. La versión 1.3.0-alpha08 contiene estas confirmaciones.
Nuevo administrador de estado
En esta versión, se incluye una refactorización relevante de la administración interna de estados de FragmentManager, que afecta el envío de animaciones, transiciones y métodos de ciclo de vida, así como la manera en que se controlan las transacciones pospuestas. Esta opción está habilitada de forma predeterminada. Para obtener más detalles, consulta la entrada de blog Fragments: Rebuilding the Internals. (b/139536619, b/147749580)
- Se puede usar una API experimental en
FragmentManager.enableNewStateManager(boolean)a fin de controlar si FragmentManager usa el nuevo administrador de estado. (I7b6ee)
Los siguientes problemas solo se corrigen cuando se usa el nuevo administrador de estado:
- El fragmento anterior de una operación
replaceahora se detiene correctamente antes de que se inicie el fragmento nuevo. (b/161654580) - Fragments ahora impide que varias animaciones compitan en los mismos fragmentos, lo cual evita casos en los que un
Animationanule todos los efectos deTransitiono aquellos en los que unAnimatory unTransitionen un fragmento individual se ejecuten a la vez. (b/149569323) - Ahora se ejecutan los elementos
enterTransitionyexitTranstionde todos los fragmentos que entran y salen, en lugar de que se ejecuten solo el último fragmento en entrar y el primero en salir. (b/149344150) - Los fragmentos pospuestos ya no se atascan en el estado
CREATED, sino que pasan aSTARTEDcon otros fragmentos. (b/129035555) - Se corrigió un problema por el que
FragmentManagerejecutaba operaciones de manera desordenada cuando combinaba una transacción reordenada y otra no ordenada. (b/147297731) - Mostrar varios fragmentos de forma simultánea ya no hará que se muestren temporalmente los fragmentos intermedios cuando se pospongan fragmentos. (b/37140383)
FragmentManagerahora muestra los fragmentos correctos cuando se llama afindFragmentById()ofindFragmentByTag()desde la devolución de llamadaonAttachFragment(). (b/153082833)- Fragments ya no llama a
onCreateView()en los fragmentos que se destruirán cuando el que los reemplace se posponga. (b/143915710) - El mensaje de error cuando se intenta combinar las instancias
Transitionde framework y lasTransitionde AndroidX ahora menciona el fragmento y la transición no válida. (b/155574969)
Cambios en el comportamiento
- Ahora puedes llamar a
launch()en un objetoActivityResultLauncher, en el método de ciclo de vida deonCreate()de un fragmento. (b/161464278) - La llamada a
registerForActivityResult()después deonCreate()ahora genera una excepción que indica que esto no está permitido en lugar de omitir en forma silenciosa la entrega de resultados tras un cambio de configuración (b/162255449) FragmentActivityahora usa la APIOnContextAvailableListenerpresentada en Activity1.2.0-alpha08para restablecer el estado deFragmentManager. Los objetos de escucha agregados a las subclases deFragmentActivityse ejecutarán después de este objeto de escucha. (I513da)
Correcciones de errores
- Ahora se pasa
ActivityOptionscuando se usastartIntentSenderForResult(). (b/162247961)
Problema conocido
- Cuando se usa el nuevo administrador de estado, configurar directamente la visibilidad de la vista raíz del fragmento después de
onViewCreated()y antes deonResume()ocasiona queFragmentManageranule la visibilidad que configuraste, ya que este controla la visibilidad de la vista raíz. Como solución alternativa, siempre deberías usar las operacioneshide()yshow()para cambiar la visibilidad de tu fragmento. (b/164481490)
Versión 1.3.0-alpha07
22 de julio de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 y androidx.fragment:fragment-testing:1.3.0-alpha07. La versión 1.3.0-alpha07 contiene estas confirmaciones.
Nuevas funciones
- El objeto
FragmentScenarioahora admite la configuración de un estado inicial Lifecycle deCREATED,STARTEDoRESUMED, en lugar de trasladar siempre el elemento Fragment al estadoRESUMED. (b/159662750) - Se agregó una alternativa a la API de
FragmentScenariodel objetoonFragmenten forma del métodowithFragmentde extensión reificada de Kotlin que te permite mostrar un valor. Cabe destacar que vuelve a mostrar las excepciones generadas en el bloque especificado. (b/158697631)
Cambios en el comportamiento
- El elemento
FragmentScenarioahora usa el objetosetMaxLifecycle()para implementar el parámetromoveToState(), lo que garantiza un comportamiento coherente en todos los niveles de API y separa el estado de Fragment del elemento Activity subyacente. (b/156527405) - El elemento
SavedStateRegistryOwnerque muestra el objetoViewTreeSavedStateRegistryOwnerahora está vinculado al parámetro Lifecycle de la vista de fragmento, lo que garantiza que tenga su estado guardado y que se restablezca al mismo tiempo que la vista de fragmento. (b/158503763)
Correcciones de errores
- Los fragmentos ahora esperan a que se adjunte la vista de fragmento antes de llamar al objeto
ViewCompat.requestApplyInsets(), lo que evita casos en los que se descarta la solicitud de inserción (b/158095749) - Llamar al objeto
clearFragmentResultListenerahora borra correctamente el observador del ciclo de vida. (b/159274993)
Versión 1.3.0-alpha06
10 de junio de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 y androidx.fragment:fragment-testing:1.3.0-alpha06. La versión 1.3.0-alpha06 contiene estas confirmaciones.
Nuevas funciones
- La devolución de llamada
onAttachFragment()enFragmentActivityyFragmentdejó de estar disponible. Se agregó unFragmentOnAttachListenernuevo para brindar una alternativa más flexible, que permite la delegación deonAttachFragment()a objetos de escucha separados que pueden probarse, además de admitir que se agregue un objeto de escucha a FragmentManagers distinto de tu FragmentManager secundario directo. (I06d3d)
Correcciones de errores
- Los fragmentos superiores ahora tienen su estado de la vista restablecido antes que los fragmentos secundarios, lo que corrige un problema de orden visual luego de un cambio de configuración cuando un
DialogFragmentmostraba otroDialogFragmentcomo fragmento secundario. (b/157195715) - Se corrigió un problema en el que la comprobación de lint
UseRequireInsteadOfGetno controlaba correctamente los usos encadenados de los operadores?.y!!. (b/157677616)
Versión 1.3.0-alpha05
20 de mayo de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 y androidx.fragment:fragment-testing:1.3.0-alpha05. La versión 1.3.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad para el objeto
ViewTreeViewModelStoreOwnerdel elemento Lifecycle2.3.0-alpha03y para el objetoViewTreeSavedStateRegistryOwnerdel elemento SavedState1.1.0-alpha01cuando se usa un objetoViewdentro de un elementoFragment. (aosp/1297993, aosp/1300264)
Cambios en la API
- Las API de
setFragmentResult()ysetFragmentResultListener()ahora toman un valor no nulo deBundleyFragmentResultListener, respectivamente. Para borrar de forma explícita un objeto de escucha o un resultado establecido previamente, usa los nuevos métodosclearFragmentResult()yclearFragmentResultListener(). (b/155416778) - Las extensiones de Kotlin
setFragmentResultListener()que toman un valor lambda ahora están identificadas comoinline. (b/155323404)
Cambios en el comportamiento
- Los objetos
startActivityForResult(),startIntentSenderForResult()yrequestPermissionsque habían dejado de estar disponibles enFragmentahora usanActivityResultRegistryde forma interna, lo que quita la restricción sobre el uso de los bits inferiores (inferiores a0xFFFF) en tus códigos de solicitud cuando se usan esas API. (b/155518741)
Actualizaciones de la documentación
- Se amplió la documentación en los constructores
Fragment(@LayoutRes int)yDialogFragment(@LayoutRes int)para aclarar que deben llamarse desde el constructor sin argumentos de tus subclases cuando se usa elFragmentFactorypredeterminado. (b/153042497)
Versión 1.3.0-alpha04
29 de abril de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 y androidx.fragment:fragment-testing:1.3.0-alpha04. La versión 1.3.0-alpha04 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad para pasar resultados entre dos fragmentos a través de nuevas APIs en
FragmentManager. Esta opción funciona para fragmentos de jerarquía (superior/secundario), DialogFragments y fragmentos en Navigation, y garantiza que los resultados solo se envíen a tu Fragment cuando sea al menosSTARTED. (b/149787344)
Cambios en la API
- Las API del fragmento de destino dejaron de estar disponibles. Para pasar datos entre fragmentos, se deben usar las nuevas API de resultados de fragmentos. (b/149787344)
- Las API
startActivityForResult()/onActivityResult()yrequestPermissions()/onRequestPermissionsResult()en Fragment dejaron de estar disponibles. Usa las API de resultados de actividad. (aosp/1290887) - Cambio rotundo de Activity
1.2.0-alpha04: se cambió el nombre del métodoprepareCall()aregisterForActivityResult(). (aosp/1278717)
Correcciones de errores
- El
getViewLifecycleOwner()del fragmento ahora se detiene antes de llamar aonSaveInstanceState(), lo que refleja el comportamiento del ciclo de vida del fragmento. (b/154645875) - Llamar a
setMenuVisibility(false)en un fragmento ahora cambia correctamente la visibilidad de los menús que proporcionan sus fragmentos secundarios. (b/153593580) - Se corrigió un
illegalStateExceptioncuando se agrega un fragmento a la jerarquía de vistas deDialogFragmentconFragmentContainerView. (b/154366601) - El método
getDefaultViewModelProviderFactory()de los fragmentos ya no falla cuando tus fragmentos se alojan fuera de una actividad. (b/153762914)
Versión 1.3.0-alpha03
1 de abril de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 y androidx.fragment:fragment-testing:1.3.0-alpha03. La versión 1.3.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Los métodos
prepareCalldeFragmentahora sonfinal. (b/152439361)
Correcciones de errores
- Se corrigió una regresión que se introdujo en Fragment
1.3.0-alpha02cuando se usabaBottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163) - Se corrigió una falla que se producía cuando se usaba
prepareCalldesde un fragmento después de un cambio de configuración. (b/152137004) - Se corrigió un problema por el que se ignoraban las transiciones de salida y los elementos compartidos cuando se usaba
setTargetFragment(). (b/152023196) - A partir de Fragment
1.2.4: se actualizaron las reglas de ProGuard de Fragment para permitir la ofuscación de los fragmentos que se conservaron. (b/151605338) - A partir de Fragment
1.2.4: Se inhabilitó la regla de lint deFragmentLiveDataObserveen las clasesDialogFragment, ya que su ciclo de vida y el ciclo de vida de sus vistas siempre están sincronizados, lo que hace que sea más seguro usarthisoviewLifecycleOwnerpara las llamadas aobserve(b/151765086)
Cambios de dependencia
- Los fragmentos dependen de Activity
1.2.0-alpha03, que tuvo mejoras significativas en la API de Activity Result que se introdujo en Activity1.2.0-alpha02.
Versión 1.3.0-alpha02
18 de marzo de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 y androidx.fragment:fragment-testing:1.3.0-alpha02. La versión 1.3.0-alpha02 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad para la API de
ActivityResultRegistryque se introdujo en Activity1.2.0-alpha02para controlar los flujosstartActivityForResult()+onActivityResult()yrequestPermissions()+onRequestPermissionsResult()sin anular métodos en Fragment. Además, se proporcionan hooks para probar estos flujos. Consulta la información actualizada en Cómo obtener un resultado de una actividad. (b/125158199)
Cambios en la API
DialogFragmentahora proporciona un constructor que toma un@LayoutResque, a su vez, indica el diseño queonCreateView()debería aumentar de forma predeterminada. (b/150327080)- El método
onActivityCreated()dejó de estar disponible. El código que toca la vista del fragmento se debe crear enonViewCreated()(al que se llama inmediatamente antes deonActivityCreated()), mientras que el resto del código de inicialización debe estar enonCreate(). Para recibir una devolución de llamada específicamente cuando elonCreate()de la actividad está completo, se debe registrar unLifeCycleObserveren elLifecyclede la actividad enonAttach(), y se lo debe quitar una vez que se reciba la devolución de llamada deonCreate(). (b/144309266)
Correcciones de errores
- A partir de Fragment
1.2.3: se corrigió un error deDialogFragmentque ocasionaba unStackOverflowErrorcuando se llamaba agetLayoutInflater()desdeonCreateDialog(). (b/117894767, aosp/1258664) - A partir de Fragment
1.2.3: Se redujo el alcance de las reglas de ProGuard incluidas de Fragment para garantizar que se puedan quitar las clases de Fragment sin utilizar. (b/149665169) - A partir de Fragment
1.2.3: Se corrigieron los falsos positivos en la comprobación de lint deUseRequireInsteadOfGetcuando se utilizaba un nombre de variable local que reemplazaba el nombre de propiedad de Kotlin (b/149891163). - A partir de Fragment
1.2.3:FragmentContainerViewya no arroja unUnsupportedOperationExceptionpor usar el constructor incorrecto en la vista previa de diseño. (b/149707833)
Errores conocidos
BottomSheetDialogFragmentya no posiciona correctamente su diálogo en la pantalla. (b/151652127)
Versión 1.3.0-alpha01
4 de marzo de 2020
Lanzamiento de androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 y androidx.fragment:fragment-testing:1.3.0-alpha01. La versión 1.3.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con la API de
ViewTreeLifecycleOwner.get(View)en Lifecycle2.3.0-alpha01, de manera que mostrará elviewLifecycleOwnerde Fragment como elLifecycleOwnerpara cualquier View que muestreonCreateView(). (aosp/1182955)
Cambios en la API
- El método
setRetainInstance()de Fragment dejó de estar disponible. Con la introducción de ViewModels, los desarrolladores tienen una API específica para un estado de retención que se puede asociar con gráficos de Activity, Fragment y Navigation. De esta manera, los desarrolladores pueden usar un Fragment normal sin retención y mantener el estado específico que quieren retener por separado a fin de evitar una fuente común de fugas y, al mismo tiempo, mantener las propiedades útiles de una sola creación y destrucción del estado de retención (es decir, el constructor deViewModely la devolución de llamada deonCleared()que recibe). (b/143911815) - Con el lanzamiento de ViewPager2
1.0.0, las clasesFragmentPagerAdapteryFragmentStatePagerAdapterpara interactuar conViewPagerdejaron de estar disponibles. Consulta Cómo migrar de ViewPager a ViewPager2. (b/145132715)
Correcciones de errores
- Las reglas de ProGuard de Fragment ahora solo mantienen las clases
Fragmentde constructores predeterminadas que están en uso, en lugar de todas las instancias deFragment. De esta manera, se corrige una regresión que se introdujo en Fragment1.2.1. (b/149665169 - Las reglas de lint de
require___()que se agregaron en Fragment1.2.2ya no muestran valores falsos positivos en las variables locales que comparten el mismo nombre que las propiedades de Kotlin reemplazadas (es decir,view). (b/149891163) FragmentContainerViewya no arroja unaUnsupportedOperationExceptioncuando se usa la vista previa de diseño en Android Studio. (b/149707833)- Se corrigió un error por el que los fragmentos retenidos que se agregaban después de que se guardaba un estado no se recreaban continuamente ni se destruían después de un cambio de configuración. (b/145832397)
Versión 1.2.5
Versión 1.2.5
10 de junio de 2020
Lanzamiento de androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 y androidx.fragment:fragment-testing:1.2.5. La versión 1.2.5 contiene estas confirmaciones.
Correcciones de errores
- El
getViewLifecycleOwner()del fragmento ahora se detiene antes de llamar aonSaveInstanceState(), lo que refleja el comportamiento del ciclo de vida del fragmento. Anteriormente, se lanzó en Fragment1.3.0-alpha04. (b/154645875) - Llamar a
setMenuVisibility(false)en un fragmento ahora cambia correctamente la visibilidad de los menús que proporcionan sus fragmentos secundarios. Anteriormente, se lanzó en Fragment1.3.0-alpha04. (b/153593580)
Versión 1.2.4
Versión 1.2.4
1 de abril de 2020
Lanzamiento de androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 y androidx.fragment:fragment-testing:1.2.4. La versión 1.2.4 contiene estas confirmaciones.
Correcciones de errores
- Se actualizaron las reglas de ProGuard de Fragment para permitir la ofuscación de fragmentos que se mantuvieron. (b/151605338)
- Se inhabilitó la regla de lint de
FragmentLiveDataObserveen las clasesDialogFragment, ya que su ciclo de vida y el ciclo de vida de sus vistas siempre están sincronizados, lo que hace que sea más seguro usarthisoviewLifecycleOwnerpara las llamadas aobserve. (b/151765086)
Versión 1.2.3
Versión 1.2.3
18 de marzo de 2020
Lanzamiento de androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 y androidx.fragment:fragment-testing:1.2.3. La versión 1.2.3 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error de
DialogFragmentque provocaba unStackOverflowErrorcuando se llamaba agetLayoutInflater()desdeonCreateDialog(). (b/117894767, aosp/1258665) - Se redujo el alcance de las reglas de ProGuard incluidas de Fragment para garantizar que se puedan quitar las clases de Fragment sin utilizar. (b/149665169)
- Se corrigieron los falsos positivos en la comprobación de lint de
UseRequireInsteadOfGetcuando se utilizaba un nombre de variable local que reemplazaba el nombre de propiedad de Kotlin. (b/149891163) FragmentContainerViewya no arroja unaUnsupportedOperationExceptioncuando se usa el constructor incorrecto en la vista previa de diseño. (b/149707833)
Versión 1.2.2
Versión 1.2.2
19 de febrero de 2020
Lanzamiento de androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 y androidx.fragment:fragment-testing:1.2.2. La versión 1.2.2 contiene estas confirmaciones.
Nuevas comprobaciones de lint
- La herramienta lint sugiere usar
viewLifecycleOwnercomoLifecycleOwnerpara las llamadas aOnBackPressedDispatcherenonCreateView(),onViewCreated()yonActivityCreated(). (b/142117657) - Se agregó una nueva verificación de lint que confirma que estás usando la
debugImplementationcorrecta cuando utilizas el artefactofragment-testing. (b/141500106) - Los fragmentos ahora sugieren el uso de los métodos
require___()asociados para mensajes de error más descriptivos en lugar decheckNotNull(get___()),requireNonNull(get___())oget___()!!para todas las APIs de Fragment que incluyen un equivalente degetyrequire. (aosp/1202883)
Correcciones de errores
- Se corrigieron los archivos de ProGuard de Fragment a fin de evitar las advertencias de R8. (b/148963981)
- Se mejoró la comprobación de lint existente que sugiere el uso de
viewLifecycleOwnercuando se utilizaobservea fin de controlar también la versión del método de extensión delivedata-ktxdeobserve. (b/148996309) - Se corrigió el formato de muchas de las verificaciones de lint. (aosp/1157012)
Contribuciones externas
- Agradecemos a Zac Sweers, de Slack, por contribuir con las verificaciones de lint de
require___(). (aosp/1202883)
Versión 1.2.1
Versión 1.2.1
5 de febrero de 2020
Lanzamiento de androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 y androidx.fragment:fragment-testing:1.2.1. La versión 1.2.1 contiene estas confirmaciones.
Correcciones de errores
- Los fragmentos que se agregaron mediante los métodos
addyreplaceque toman una instanciaClass(o las versiones reificadas de Kotlin) ahora tienen su constructor predeterminado mantenido por ProGuard. (b/148181315) FragmentStatePagerAdapteryFragmentPagerAdapterya no detectan las excepciones que arrojaFragmentManagercuando se ejecutafinishUpdate(). (aosp/1208711)- Se corrigió un error por el que
FragmentManager.findFragment()no funcionaba con fragmentos que se agregaban mediante la etiqueta<fragment>. (b/147784323) - Los fragmentos aumentados que usan la etiqueta
<fragment>ahora siempre reciben una llamada aonInflate()antes deonCreate()cuando está en el diseño. (aosp/1215856) - Una llamada a
toString()en una instancia deFragmentManagerya no arroja unaNullPointerExceptioncuando ya se destruyó la Activity. (b/148189412)
Cambios de dependencia
- Fragment
1.2.1ahora depende de Lifecycle ViewModel SavedState2.2.0.
Versión 1.2.0
Versión 1.2.0
22 de enero de 2020
Lanzamiento de androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 y androidx.fragment:fragment-testing:1.2.0. La versión 1.2.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.1.0
- FragmentContainerView:
FragmentContainerViewes el contenedor recomendado para los fragmentos agregados de forma dinámica, con lo que se reemplaza el uso deFrameLayouty otros diseños. También admite los mismosclass,android:nameyandroid:tagopcional como la etiqueta de<fragment>, pero usa un elementoFragmentTransactionnormal para agregar este fragmento inicial, en lugar de la ruta de acceso del código personalizado que usa<fragment>. - Sincronización de
onDestroyView(): Los fragmentos ahora esperan a que se completen las animaciones de salida y las transiciones de salida de framework y de AndroidX (al usar Transition1.3.0) antes de llamar aonDestroyView(). add()yreplace()basados en clases: Se agregaron nuevas sobrecargas deadd()yreplace()enFragmentTransaction, que toman unaClass<? extends Fragment>y unBundleopcional de argumentos. Estos métodos usan tuFragmentFactorypara construir una instancia del fragmento que se agregará. También se agregaron afragment-ktxlas extensiones de Kotlin que usan tipos reificados (es decir,fragmentTransaction.replace<YourFragment>(R.id.container)).- Integración de Lifecycle ViewModel SavedState:
SavedStateViewModelFactoryahora es el valor predeterminado de fábrica que se utiliza cuando se usanby viewModels(),by activityViewModels(), el constructorViewModelProvidero un objetoViewModelProviders.of()con un fragmento. - Nuevas comprobaciones de Lint: Se agregó una nueva verificación de Lint que garantiza que utilices
getViewLifecycleOwner()al observarLiveDatadesdeonCreateView(),onViewCreated()oonActivityCreated(). - Baja de
getFragmentManager(): Los métodosgetFragmentManager()yrequireFragmentManager()de Fragment dejaron de estar disponibles y se reemplazaron por un solo métodogetParentFragmentManager(), que muestra el valorFragmentManagerno nulo al que se agrega el fragmento (puedes usarisAdded()para determinar si es seguro hacer la llamada). - Baja de
FragmentManager.enableDebugLogging(): el métodoFragmentManager.enableDebugLoggingestático dejó de estar disponible. FragmentManager ahora respetaLog.isLoggable()para la etiquetaFragmentManager, lo que te permite habilitar el registroDEBUGoVERBOSEsin volver a compilar tu app.
Errores conocidos
- ProGuard no guarda automáticamente los fragmentos a los que se hace referencia mediante el atributo
classoandroid:nameen unaFragmentContainerView, y esto requiere que agregues manualmente una regla de conservación para cada clase de fragmento (b/142601969). - Cuando agregas un objeto
NavHostFragmentmediante unaclassoandroid:nameen XML conFragmentContainerView, no puedes usar el elementofindNavController()enonCreate()de tu Actividad. (b/142847973)
Versión 1.2.0-rc05
8 de enero de 2020
Lanzamiento de androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 y androidx.fragment:fragment-testing:1.2.0-rc05. La versión 1.2.0-rc05 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una regresión en Fragment
1.2.0-rc04cuando se usaba la etiqueta<fragment>que causaba que se llamara aonViewCreated()de forma incorrecta durante la destrucción de la actividad. (b/146290333) - Ahora, se borra el estado de no configuración de los fragmentos que se agregan con la etiqueta
<fragment>incluso cuando solo están a veces en el diseño (es decir, solo en el diseño horizontal). Como consecuencia, estos fragmentos ahora se mueven correctamente aCREATED, aunque no estén en el diseño, en lugar de crear una instancia, pero sin moverse por ningún método de ciclo de vida. (b/145769287)
Versión 1.2.0-rc04
18 de diciembre de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 y androidx.fragment:fragment-testing:1.2.0-rc04. La versión 1.2.0-rc04 contiene estas confirmaciones.
Correcciones de errores
- Se ajustaron las animaciones para
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEyTRANSIT_FRAGMENT_FADEa fin de evitar problemas visuales. (b/145468417)
Versión 1.2.0-rc03
4 de diciembre de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 y androidx.fragment:fragment-testing:1.2.0-rc03. La versión 1.2.0-rc03 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un cambio de comportamiento no intencional en el que
findFragmentById()/findFragmentByTag()siguen mostrando los fragmentos que se quitaron mientras se ejecutan las transiciones o animaciones de salida. (b/143982969, aosp/1167585) - Ahora los fragmentos secundarios se detienen correctamente antes que los superiores cuando la actividad que los contiene llama a
onSaveInstanceState(). (b/144380645) - Se solucionó un problema en el que se marcaban las vistas como
INVISIBLEpor error después de mostrar un fragmento oculto (b/70793925). - Las transiciones de elementos compartidos de fragmentos ahora controlan las vistas que se rotaron, escalaron, etcétera. (b/142835261)
Actualizaciones de la documentación
- Se aclaró la documentación sobre cómo controlar el código ahora que
setUserVisibleHint()dejó de estar disponible. (b/143897055) - Se mejoró la documentación sobre
setFragmentFactory()ygetFragmentFactory()para aclarar que la configuración de un objetoFragmentFactorytambién afectará a los FragmentManagers secundarios. (aosp/1170095)
Cambios de dependencia
- Los fragmentos ahora dependen de Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03y Activity1.1.0-rc03.
Versión 1.2.0-rc02
7 de noviembre de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 y androidx.fragment:fragment-testing:1.2.0-rc02. La versión 1.2.0-rc02 contiene estas confirmaciones.
Correcciones de errores
- Cuando se usa Kotlin, el LintFix para usar
getViewLifecycleOwner()al observarLiveDatadeonCreateView(),onViewCreated()oonActivityCreated()(introducido en Fragment1.2.0-rc01) ahora usaviewLifecycleOwnerde sintaxis de acceso a la propiedad de Kotlin, en lugar degetViewLifecycleOwner()(aosp/1143821).
Versión 1.2.0-rc01
23 de octubre de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 y androidx.fragment:fragment-testing:1.2.0-rc01. La versión 1.2.0-rc01 contiene estas confirmaciones.
Nuevas funciones
FragmentContainerViewahora admite el atributoclassademás deandroid:name, lo cual refleja la funcionalidad de la etiqueta<fragment>. (b/142722242)- Se agregó una nueva comprobación de Lint que garantiza que utilices
getViewLifecycleOwner()al observarLiveDatadesdeonCreateView(),onViewCreated()oonActivityCreated()(b/137122478).
Correcciones de errores
- Las devoluciones de llamada de
onDismissyonCancelenDialogFragmentahora garantizan que laDialogInterfaceque se les pasa no es nula y quegetDialog()muestra que no es nulo cuando se ejecutan. (b/141974033) FragmentContainerViewahora agrega el fragmento que definen laclasso elandroid:namecomo parte de la inflación, lo que asegura quefindFragmentById()yfindFragmentByTag()funcionen posteriormente de inmediato. (b/142520327)- Se corrigió una
IllegalStateExceptionenFragmentContainerViewque se producía debido al estado que se guardaba. (b/142580713) - Se corrigió una
UnsupportedOperationExceptionenFragmentContainerViewque se produce cuando la claseFragmentContainerViewestá ofuscada (b/142657034).
Errores conocidos
- ProGuard no guarda automáticamente los fragmentos a los que se hace referencia mediante el atributo
classoandroid:nameen unaFragmentContainerView, y esto requiere que agregues manualmente una regla de conservación para cada clase de fragmento Inhabilitamos la regla de Lint que sugiere pasar aFragmentContainerViewhasta que esto se corrija medianteaapt2(b/142601969).
Versión 1.2.0-beta02
11 de octubre de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 y androidx.fragment:fragment-testing:1.2.0-beta02. La versión 1.2.0-beta02 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema en el que
onInflate()de Fragment no recibía los atributos adecuados deFragmentContainerViewe inutilizaba casos, comoNavHostFragment(b/142421837).
Versión 1.2.0-beta01
9 de octubre de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 y androidx.fragment:fragment-testing:1.2.0-beta01. La versión 1.2.0-beta01 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad de
FragmentContainerViewpara agregar un fragmento inicial con compatibilidad adicional para los atributos XML opcionalesandroid:nameyandroid:tag. A diferencia de la etiqueta<fragment>,FragmentContainerViewusa unaFragmentTransactionnormal para agregar el fragmento inicial, lo que permite operaciones deFragmentTransactionadicionales enFragmentContainerViewy habilita el uso de la vinculación de vista para la diseño (b/139830628, b/141177981). - Ahora Fragments contiene una advertencia de Lint que ofrece una solución rápida para reemplazar
<fragment>porFragmentContainerView(b/139830056).
Correcciones de errores
- Se corrigió un error
ClassCastExceptionque se producía cuando se usabaandroidx.transition. (b/140680619) - Al utilizar Transition
1.3.0-beta01, los fragmentos ahora esperan las transicionesandroidx.transition(además de las transiciones y las animaciones de framework, que se corrigieron en Fragment1.2.0-alpha03y Fragment1.2.0-alpha02, respectivamente) para terminar antes de enviaronDestroyView(). (aosp/1119841) - Al utilizar Transition
1.3.0-beta01, los fragmentos ahora cancelan correctamente las transicionesandroidx.transitionantes de comenzar transiciones o animaciones nuevas en el mismo contenedor. (aosp/1119841) - Se solucionó un problema en el nivel de API 17 y versiones anteriores cuando se usaban transiciones
androidx.transitionen la vista raíz de Fragment al usarFragmentContainerView. (b/140361893) - El artefacto
fragment-testingahora depende de AndroidX Test1.2.0, que corrige una incompatibilidad con la versión más reciente de Espresso 3.2.0. (b/139100149) - Se quitó el uso de
Log.wen FragmentManager (aosp/1126468).
Errores conocidos
- Los elementos
onInflate()de Fragment no reciben los atributos adecuados deFragmentContainerViewe inutilizan casos, comoNavHostFragment(b/142421837).
Versión 1.2.0-alpha04
18 de septiembre de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 y androidx.fragment:fragment-testing:1.2.0-alpha04. La versión 1.2.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Los métodos
getFragmentManager()yrequireFragmentManager()deFragmentdejaron de estar disponibles y se reemplazaron por un solo métodogetParentFragmentManager(), que muestra el valorFragmentManagerno nulo al que se agregó el fragmento (puedes usarisAdded()para determinar si es seguro realizar la llamada) (b/140574496) - El método
FragmentManager.enableDebugLoggingestático dejó de estar disponible. FragmentManager ahora respetaLog.isLoggable()para la etiquetaFragmentManager, lo que te permite habilitar el registroDEBUGoVERBOSEsin volver a compilar tu app (aosp/1116591).
Correcciones de errores
- Ahora, los fragmentos se destruyen correctamente mientras se ejecutan animaciones de salida en otros fragmentos. (b/140574199)
- Se solucionó un problema por el cual Fragments llamaba a
Activity.findViewById(), cuando antes no lo hacía (aosp/1116431).
Versión 1.2.0-alpha03
5 de septiembre de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 y androidx.fragment:fragment-testing:1.2.0-alpha03. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Cambios en la API
FragmentContainerViewahora esfinal(b/140133091).
Correcciones de errores
FragmentContainerViewahora revierte correctamente el orden de extracción al abrir fragmentos de la pila de actividades. (b/139104187)- Se solucionó un problema por el cual la animación incorrecta se ejecutaba cuando, al mismo tiempo, aparecía un fragmento y se agregaba un nuevo fragmento (b/111659726)
- Los fragmentos ahora esperan a que finalicen las transiciones (además de las animaciones, que se corrigieron en Fragment
1.2.0-alpha02) antes de enviaronDestroyView()(b/138741697).
Versión 1.2.0-alpha02
7 de agosto de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 y androidx.fragment:fragment-testing:11.2.0-alpha02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Nuevas funciones
SavedStateViewModelFactoryahora es el valor predeterminado de fábrica que se utiliza cuando se usaby viewModels(),by activityViewModels(), el constructorViewModelProvideroViewModelProviders.of()con unFragment. (b/135716331)- Se actualizaron las animaciones predeterminadas que se reproducen al usar
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEyTRANSIT_FRAGMENT_FADEconsetTransitionen unaFragmentTransactiona fin de que coincidan con las animaciones que las actividades utilizan en los dispositivos Android 10. (aosp/1012812, aosp/1014730)
Cambios en la API
- Presenta a
FragmentContainerViewcomo el contenedor recomendado para los fragmentos agregados de forma dinámica, con lo que se reemplaza el uso deFrameLayout, etc. A su vez, esto corrige problemas de orden z de animación y despacho de inserciones de ventana a elementos Fragment (b/37036000, aosp/985243, b/136494650). - Se agregó un método
FragmentManager.findFragment(View)estático para recuperar el elemento Fragment de contención de una vista inflada por un fragmento. También hay una extensión de Kotlin disponible enfragment-ktx(aosp/1090757). - Se agregaron nuevas sobrecargas de
add()yreplace()enFragmentTransaction, que toman unaClass<? extends Fragment>y unBundleopcional de argumentos. Estos métodos usan tuFragmentFactorypara construir una instancia del fragmento que se agregará. También se agregó afragment-ktxla extensión de Kotlin que usa tipos reificados (es decir,fragmentTransaction.replace<YourFragment>(R.id.container)) (b/126124987). - Se agregaron las anotaciones de
@MainThreada las devoluciones de llamada del ciclo de vida deFragment. (b/127272564) - Las API relacionadas con el título de la ruta de navegación en
FragmentTransactionyFragmentManager.BackStackEntrydejaron de estar disponibles. (b/138252944) - El método
setTransitionStyleenFragmentTransactiondejó de estar disponible (aosp/1011537). - Muchos de los métodos en
FragmentManagerya no sonabstract.FragmentManageren sí mismo sigue siendoabstracty no se debería instanciar ni extender directamente; debe continuar obteniendo solo una instancia existente degetSupportFragmentManager(),getChildFragmentManager(), etc.
Correcciones de errores
- A partir de Fragment
1.1.0-rc04: los fragmentos ahora cancelan correctamente las transiciones pospuestas en los fragmentos que se muestran. (b/138251858) - A partir de Fragment
1.1.0-rc03: Se solucionó un problema por el cual llamar apostponeEnterTransition()con un tiempo de espera superior a una vez no cancelaba los tiempos de espera anteriores (b/137797118) - A partir de Fragment
1.1.0-rc02: Se corrigió una falla enFragmentPagerAdapteryFragmentStatePagerAdapterque se producía cuando se quitaba el elemento actual (b/137209870). - Los fragmentos ahora esperan a que finalicen las animaciones para despachar a
onDestroyView(). (b/136110528) - Las animaciones de fragmentos secundarios y sus descendientes ahora se manejan correctamente cuando se reproducen animaciones en el Fragment superior. (b/116675313)
- Se corrigió una
NullPointerExceptionque se producía cuando se usaban transiciones de elementos compartidos y se las combinaba con una operación de resaltar y agregar. (b/120507394) - Se agregó una solución alternativa a las
IllegalStateExceptionque se producían cuando se usabanFragmentPagerAdapteryFragmentStatePagerAdapteren las pruebas con Robolectric (b/137201343).
Versión 1.2.0-alpha01
2 julio de 2019
Lanzamiento de androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 y androidx.fragment:fragment-testing:1.2.0-alpha01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Nuevas funciones
- FragmentManager ahora llama a
requestApplyInsets()después de adjuntar la vista de Fragment y directamente antes de llamar aonViewCreated(), lo que garantiza que tu vista siempre tenga las inserciones correctas. (b/135945162)
Correcciones de errores
- Se corrigió una
NullPointerExceptioncuando aparecía unaFragmentTransactionque usabasetPrimaryNavigationFragment()antes dereplace()(b/134673465).
Versión 1.1.0
Versión 1.1.0
5 de septiembre de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 y androidx.fragment:fragment-testing:1.1.0. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Cambios importantes desde 1.0.0
- fragment-testing: el artefacto
fragment-testingproporciona una claseFragmentScenariopara probar fragmentos de forma aislada. Consulta la documentación de prueba de fragmentos de la app para obtener más detalles. - FragmentFactory: ahora puedes establecer una
FragmentFactoryen unFragmentManagerpara administrar la creación de instancias de fragmentos, lo que elimina el requisito estricto de tener un constructor sin argumentos. - Delegados de propiedades de Kotlin para ViewModels: el artefacto
fragment-ktxahora contiene dos delegados de propiedades de Kotlin:by viewModels()para acceder a los objetos ViewModel asociados con el fragmento individual yby activityViewModels()para acceder a los objetos ViewModel dentro de la actividad. - Ciclo de vida máximo: ahora puedes establecer un estado de ciclo de vida máximo para un Fragment llamando a
setMaxLifecycle()en unaFragmentTransaction. Esto reemplazasetUserVisibleHint(), que dejó de estar disponible.FragmentPagerAdapteryFragmentStatePagerAdaptertienen un nuevo constructor que te permite usar el nuevo comportamiento. - Constructor FragmentActivity LayoutId: ahora las subclases de
FragmentActivitypueden invocar opcionalmente a un constructor enFragmentActivityque toma un ID deR.layout, que indica el diseño que se debe establecer como vista de contenido como alternativa para invocar asetContentView()enonCreate(). Esto no cambia el requisito de que tu subclase tenga un constructor sin argumentos. - Constructor Fragment LayoutId : ahora las subclases de
Fragmentpueden invocar a un constructor enFragmentque toma un ID deR.layout, que indica el diseño que se debe usar para este fragmento como alternativa para anularonCreateView(). El diseño inflado se puede configurar enonViewCreated(). - Posponer con un tiempo de espera: se agregó una nueva sobrecarga de
postponeEnterTransition()que toma un tiempo de espera.
Versión 1.1.0-rc04
7 de agosto de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 y androidx.fragment:fragment-testing:1.1.0-rc04. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Correcciones de errores
- Los fragmentos ahora cancelan correctamente las transiciones pospuestas en los fragmentos que se resaltan (b/138251858).
Versión 1.1.0-rc03
19 de julio de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 y androidx.fragment:fragment-testing:1.1.0-rc03. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Correcciones de errores
- Se solucionó un problema por el cual llamar a
postponeEnterTransition()con un tiempo de espera más de una vez no cancelaba los tiempos de espera anteriores. (b/137797118)
Versión 1.1.0-rc02
17 de julio de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 y androidx.fragment-testing:fragment:1.1.0-rc02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Correcciones de errores
- Se corrigió una falla en
FragmentPagerAdapteryFragmentStatePagerAdapterque se producía cuando se quitaba el elemento actual (b/137209870).
Versión 1.1.0-rc01
2 julio de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 y androidx.fragment:fragment-testing:1.1.0-rc01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Correcciones de errores
- Los fragmentos ahora actualizan su visibilidad de forma correcta cuando se usan las operaciones
show()ohide()mientras se está ejecutando la transición (b/133385058). - Se corrigió una
NullPointerExceptioncuando aparecía unaFragmentTransactionque usabasetPrimaryNavigationFragment()antes dereplace()(b/134673465).
Versión 1.1.0-beta01
5 de junio de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 y androidx.fragment:fragment-testing:1.1.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Correcciones de errores
- Ahora se anidan de forma correcta las devoluciones de llamada de
androidx.lifecycle.Lifecycle(específicamente relacionadas conSTARTED,RESUMED,PAUSED,STOPPEDyDESTROYED) para fragmentos anidados. (b/133497591) - Las instancias de
OnBackPressedCallbackregistradas en el elementoonCreate()de un fragmento ahora tienen precedencia correcta sobre el FragmentManager secundario (b/133175997) - Los fragmentos secundarios ya no tienen animaciones cuando se reemplaza el fragmento superior. (b/121017790)
- Las animaciones y transiciones de fragmentos ahora se omiten cuando se usa
animateLayoutChanges="true", con lo que se soluciona un problema por el cual los fragmentos no se destruían correctamente (b/116257087).
Versión 1.1.0-alpha09
16 de mayo de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 y androidx.fragment:fragment-testing:1.1.0-alpha09. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Cambios en la API
- Los fragmentos ahora reciben una devolución de llamada a un nuevo método
onPrimaryNavigationFragmentChanged(boolean)cuando cambia el fragmento de navegación principal. (aosp/960857)
Correcciones de errores
- Los elementos de menú inflados por un fragmento secundario ahora se quitan correctamente cuando se quita el fragmento principal. b/131581013
Versión 1.1.0-alpha08
7 de mayo de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 y androidx.fragment:fragment-testing:1.1.0-alpha08. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Esta versión es incompatible con Preferences 1.1.0-alpha01 a 1.1.0-alpha04. Actualiza a Preferences 1.1.0-alpha05 cuando uses esta versión de Fragments.
Nuevas funciones
- Se agregó una nueva sobrecarga de
postponeEnterTransition()que toma un tiempo de espera, después de lo cual Fragment llama automáticamente astartPostponedEnterTransition(). (b/120803208)
Cambios en la API
- Cambio rotundo: se quitó el método
FragmentFactoryinstantiateque ya había dejado de estar disponible y que tomaba unBundle. (aosp/953856) - Cambio rotundo: se cambiaron los nombres de las constantes
RESUME_ONLY_CURRENT_FRAGMENTyUSE_SET_USER_VISIBLE_HINTdeFragmentPagerAdapteryFragmentStatePagerAdapteraBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTyBEHAVIOR_SET_USER_VISIBLE_HINT, respectivamente. (aosp/954782)
Correcciones de errores
- Los fragmentos que tienen su ciclo de vida limitado mediante
setMaxLifecycle()ya no se reanudan antes de alcanzar su estado final. (b/131557151) - Cuando se use
setMaxLifecycle(Lifecycle.State.CREATED), los fragmentos se destruirán correctamente. (aosp/954180)
Versión 1.1.0-alpha07
25 de abril de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 y androidx.fragment:fragment-testing:1.1.0-alpha07. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Nuevas funciones
- Ahora puedes establecer un estado de Lifecycle máximo para un fragmento. Para ello, puedes llamar a
setMaxLifecycle()en unaFragmentTransaction. Esto reemplazasetUserVisibleHint(), que dejó de estar disponible.FragmentPagerAdapteryFragmentStatePagerAdaptertienen un nuevo constructor que te permite usar el nuevo comportamiento. (b/129780800).
Cambios en la API
moveToState(STARTED)enFragmentScenarioahora solo se puede invocar en dispositivos con el nivel de API 24 o superior (b/129880016).
Cambios en el comportamiento
- Como consecuencia de (b/129907905), los fragmentos en la pila de actividades no recibirán una devolución de llamada a
onCreateView()cuando se recree la actividad de hosting. Ahora se llamará aonCreateView()solo cuando el fragmento se vuelva visible (es decir, si se resalta la pila de actividades).
Correcciones de errores
- Se solucionó un problema que se producía cuando se usaba una etiqueta
<fragment>en XML y el constructorcontentLayoutIddeFragmentActivityoAppCompatActivity. (b/129907905) - Se corrigió un problema por el que los fragmentos de la pila de actividades no se movían, al menos a
CREATED, después de un cambio de configuración, lo que provocaba que los ViewModels y los fragmentos secundarios retenidos no se eliminaran correctamente (b/129593351). - Se corrigió una falla en
restoreSaveStatecausada por una desincronización de los fragmentos retenidos después de guardar el estado de la instancia. (b/130433793) (aosp/947824) - Se corrigieron errores por los que no se llamaba una
OnBackPressedCallbackagregado con un ciclo de vida de fragmento si elFragmentManagertenía una pila de actividades. Consulta androidx.activity 1.0.0-alpha07 para obtener más detalles (aosp/948209). - Los fragmentos ya no aplican
LAYER_TYPE_HARDWAREen las animaciones. Si necesitas específicamente una animación de capa de hardware, configúrala como parte de tu animación (b/129486478).
Versión 1.1.0-alpha06
3 de abril de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 y androidx.fragment:fragment-testing:1.1.0-alpha06. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.
Nuevas funciones
- Las excepciones arrojadas por FragmentManager ahora incluyen el nombre del fragmento en el mensaje (b/67759402).
Cambios en la API
FragmentyFragmentActivityahora contienen un segundo constructor que toma un@LayoutRes int, que a su vez reemplaza el comportamiento anterior de anotar tu clase con@ContentView. Este enfoque funciona tanto en la app como en los módulos de las bibliotecas (b/128352521).- El elemento
onActivityResult()de FragmentActivity ahora está marcado correctamente como@CallSuper. (b/127971684) - El método
instantiatede FragmentFactory que toma un argumento Bundle dejó de estar disponible y las apps deberían usar la nueva sobrecarga deinstantiateque no toma un Bundle. (b/128836103) - Los métodos
FragmentScenarioahora están anotados correctamente con@StyleRes. (aosp/924193) FragmentTabHostquedó obsoleto. (b/127971835)- Se quitó
getThemedContext()de FragmentActivity. (aosp/934078)
Correcciones de errores
- Se corrigió una regresión en 1.1.0-alpha05 que hacía que el fragmento entrante parpadeara en la pantalla. (b/129405432)
- Se solucionó un problema por el que el fragmento de navegación principal se perdía después de una serie de operaciones popBackStack+replace+popBackStack (b/124332597).
- Se corrigió un problema que se producía cuando se usaban los constructores
@ContentViewen tu actividad al restaurar el estado del fragmento. (b/127313094) - Se corrigió la lógica de
setTargetFragment()cuando se reemplaza un fragmento de destino existente con un fragmento aún no conectado a FragmentManager. (aosp/932156)
Versión 1.1.0-alpha05
13 de marzo de 2019
Lanzamiento de androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 y androidx.fragment:fragment-testing:1.1.0-alpha05. Para obtener una lista completa de las confirmaciones incluidas en esta versión, consulta este vínculo.
Nuevas funciones
- Las búsquedas de anotaciones de
@ContentViewahora se almacenan en caché. (b/123709449)
Cambios en el comportamiento
- Ahora, cuando se llama a
remove(),hide(),show(),detach()ysetPrimaryNavigationFragment()con un fragmento adjunto a un FragmentManager diferente, se muestra unaIllegalStateException, en lugar de una falla en silencio (aosp/904301).
Correcciones de errores
- Ahora,
onNewIntentparaFragmentActivityse marca correctamente con@CallSuper. (b/124120586) - Se solucionó un problema por el que se podía llamar dos veces a
onDismiss()deDialogFragmentcuando se usabagetDialog().dismiss()ogetDialog().cancel(). (b/126563750)
Versión 1.1.0-alpha04
7 de febrero de 2019
Lanzamiento de androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 y androidx.fragment:fragment-testing 1.1.0-alpha04.
Nuevas funciones
- Se agregó compatibilidad con la anotación de clase
@ContentViewque te permite indicar qué archivo de diseño en formato XML se debe aumentar como alternativa para anularonCreateView(). Se recomienda consultar el trabajo relacionado enonViewCreated()(aosp/837619). fragment-testingahora depende de la versión estable deandroidx.test:core-ktx1.1.0. (b/121209673)- Ahora puedes usar
openActionBarOverflowOrOptionsMenuconFragmentScenariopara probar los menús de opciones con hosting en Fragment. (b/121126668)
Cambios en la API
- Se agregó un método
requireArguments()que muestra un@NonNull Bundleo arroja unaIllegalStateException(b/121196360). - Se agregó una nota que indica que no se deberían anular
getLifecycle(),getViewLifecycleOwner()ygetViewLifecycleOwnerLiveData(), y que pasarán a ser definitivos en una versión futura. Presenta una solicitud de función si actualmente anulas este método (aosp/880714). - Se agregó una nota que indica que no se debería anular
getViewModelStore()y que será definitivo en una versión futura. Presenta una solicitud de función si actualmente anulas este método (aosp/880713). - Se solucionó un problema relacionado con la compatibilidad binaria con versiones anteriores de Fragment. (aosp/887877, aosp/889834)
Correcciones de errores
- Los fragmentos de destino se eliminan correctamente cuando pasas
nullasetTargetFragment(). (aosp/849969) - Se solucionó un problema por el que, en ocasiones, los fragmentos de destino no estaban disponibles en
onDestroy()o después de esta instancia. (b/122312935) - Ahora se llama a OnDismiss() de DialogFragment antes de
onDestroy(). (aosp/874133, aosp/890734)
Versión 1.1.0-alpha03
17 de diciembre de 2018
Nuevas funciones
- Fragment ahora implementa
BundleSavedStateRegistryOwnery depende de la biblioteca SavedState, recientemente publicada. (aosp/824380) - Se agregó un delegado de propiedad
by activityViewModelsde Kotlin para recuperar objetos ViewModel asociados con la actividad que los contiene. (b/119050253) - Se amplió el delegado de propiedad
by viewModelsde Kotlin para tomar un método lambda opcional a fin de obtenerViewModelStoreOwner, lo que te permite pasar el fragmento superior u otroViewModelStoreOwnerpersonalizado con código comoval viewModel: MyViewModel by viewModels(::requireParentFragment). (b/119050253)
Cambios en la API
FragmentScenarioahora te permite especificar un tema, comoTheme.AppCompat. (b/119054431) Este es un cambio rotundo.- Se agregó un método
requireView()que muestra una@NonNull Viewo arroja unaIllegalStateException. (b/120241368) - Se agregó un método
requireParentFragment()que muestra un@NonNull Fragmento arroja unaIllegalStateException. (b/112103783)
Correcciones de errores
- Se corrigió una IllegalStateException: falla al guardar el estado. (b/120814739)
- Los fragmentos que se restauran del estado de la instancia guardada siempre recibirán un
Bundleno nulo. (b/119794496) - Los fragmentos eliminados ya no reutilizan su objeto
Lifecyclesi se vuelven a agregar. (b/118880674)
Versión 1.1.0-alpha02
3 de diciembre de 2018
Nuevas funciones
- Las extensiones de Kotlin de FragmentScenario ahora te permiten usar un método lambda para la construcción de fragmentos, en lugar de pasar una instancia de
FragmentFactory(aosp/812913).
Correcciones de errores
- Se corrigió una IllegalStateException cuando se usan fragmentos anidados en la pila de actividades. (b/119256498)
- Se corrigió una falla que se producía cuando se usaba
FragmentScenario.recreate()con unaFragmentFactory. (aosp/820540) - Se solucionó un problema por el que no era posible acceder a los fragmentos de destino después de que se eliminaban (aosp/807634).
Versión 1.1.0-alpha01
5 de noviembre de 2018
Esta es la primera versión del artefacto fragment-testing y FragmentScenario, que se construye sobre las API de androidx.test:core. Consulta la Documentación de prueba de Fragment para obtener más detalles.
Nuevas funciones
- Se agregó la nueva clase FragmentScenario para probar fragmentos de forma aislada.
- Ahora puedes establecer una
FragmentFactoryen cualquierFragmentManagerpara controlar la manera en que se crean las nuevas instancias de Fragment. - Se agregó un nuevo delegado de propiedad
by viewModels()de Kotlin para recuperar objetos ViewModel de un fragmento. - Se cancelan en un
onStop()de Fragment los eventos de entrada pendientes (como los clics).
Cambios en la API
- Se expandieron significativamente las anotaciones de nulabilidad en la superficie de la API de Fragment.
Correcciones de errores
- Se solucionó un problema que causaba que las operaciones de Fragment fallaran desde LiveData. (b/77944637)
Errores conocidos
- No es posible acceder a los fragmentos de destino después de quitar un fragmento del FragmentManager.
fragment-testingdepende deandroidx.test:core:1.0.0-beta01, en lugar delandroidx.test:core:1.0.0correcto.