Fragment
Actualización más reciente | Versión estable actual | Próxima versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
27 de enero de 2021 | 1.2.5 | 1.3.0-rc02 | - | - |
Cómo declarar dependencias
Para agregar una dependencia en Fragment, debes agregar el repositorio de Maven de Google a tu proyecto. Lee el repositorio 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:
dependencies { def fragment_version = "1.2.5" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$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 en esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz 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.3.0
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
DialogFragment
superior por encima de unDialogFragment
secundario 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
hide
con unAnimation
causaba 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
Lifecycle
del fragmento procesa correctamente los casos en los que la vista del fragmento se destruye antes de queLifecycle
llegue aCREATED
, lo que evita excepciones que indican "no event down from INITIALIZED". (eda2bd, b/176138645). - Los fragmentos que usan
Animator
ahora 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
Animation
a unaFragmentContainerView
y, 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
FragmentScenario
se convirtió por completo al lenguaje de Kotlin y, al mismo tiempo, mantiene la compatibilidad con la fuente y el objeto binario mediante el uso de 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
class
oandroid:name
se 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
. (I73990, b/170676622)
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
Animator
o una de las opciones deTRANSIT_FRAGMENT_
. (I92426, b/169874632) - Se solucionó un problema que impedía que los fragmentos con una
Animation
de 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
Animator
de 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
FragmentFactory
ahora 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 estadoLifecycle
enINITIALIZING
, 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
FragmentManager
no nulo y los fragmentos con unFragmentManager
no nulo siempre se considerarán activos. (aosp/1422346) - Los efectos predeterminados de los fragmentos
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
yTRANSIT_FRAGMENT_FADE
ahora 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
INVISIBLE
antes de que comience la animación, esta permanecerá invisible. (b/164481490) - Los fragmentos ahora priorizan
Animators
por sobreAnimations
, lo que significa que un fragmento con ambos solo ejecutaráAnimator
e 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
replace
ahora 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
Animation
anule todos los efectos deTransition
o aquellos en los que unAnimator
y unTransition
en un fragmento individual se ejecuten a la vez. (b/149569323) - Ahora se ejecutan los elementos
enterTransition
yexitTranstion
de 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 aSTARTED
con otros fragmentos. (b/129035555) - Se corrigió un problema por el que
FragmentManager
ejecutaba 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)
FragmentManager
ahora 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
Transition
de framework y lasTransition
de 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) - Llamar 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) FragmentActivity
ahora usa la APIOnContextAvailableListener
presentada en Activity1.2.0-alpha08
para restablecer el estado deFragmentManager
. Los objetos de escucha agregados a las subclases deFragmentActivity
se ejecutarán después de este objeto de escucha. (I513da)
Correcciones de errores
- Ahora se pasa
ActivityOptions
cuando 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 queFragmentManager
anule 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
FragmentScenario
ahora admite la configuración de un estado inicial Lifecycle deCREATED
,STARTED
oRESUMED
, en lugar de trasladar siempre el elemento Fragment al estadoRESUMED
. (b/159662750) - Se agregó una alternativa a la API de
FragmentScenario
del objetoonFragment
en forma del métodowithFragment
de 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
FragmentScenario
ahora 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
SavedStateRegistryOwner
que muestra el objetoViewTreeSavedStateRegistryOwner
ahora 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
clearFragmentResultListener
ahora 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()
enFragmentActivity
yFragment
dejó de estar disponible. Se agregó unFragmentOnAttachListener
nuevo 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
DialogFragment
mostraba otroDialogFragment
como fragmento secundario. (b/157195715) - Se corrigió un problema en el que la comprobación de lint
UseRequireInsteadOfGet
no 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
ViewTreeViewModelStoreOwner
del elemento Lifecycle2.3.0-alpha03
y para el objetoViewTreeSavedStateRegistryOwner
del elemento SavedState1.1.0-alpha01
cuando se usa un objetoView
dentro de un elementoFragment
. (aosp/1297993, aosp/1300264)
Cambios en la API
- Las API de
setFragmentResult()
ysetFragmentResultListener()
ahora toman un valor no nulo deBundle
yFragmentResultListener
, 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()
yrequestPermissions
que habían dejado de estar disponibles enFragment
ahora usanActivityResultRegistry
de 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 elFragmentFactory
predeterminado. (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 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
. (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
illegalStateException
cuando se agrega un fragmento a la jerarquía de vistas deDialogFragment
conFragmentContainerView
. (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
prepareCall
deFragment
ahora sonfinal
. (b/152439361)
Correcciones de errores
- Se corrigió una regresión que se introdujo en Fragment
1.3.0-alpha02
cuando se usabaBottomSheetDialogFragment
. (b/151652127, aosp/1263328, aosp/1265163) - Se corrigió una falla que se producía cuando se usaba
prepareCall
desde 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 deFragmentLiveDataObserve
en 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 usarthis
oviewLifecycleOwner
para 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
ActivityResultRegistry
que se introdujo en Activity1.2.0-alpha02
a fin de 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
DialogFragment
ahora proporciona un constructor que toma un@LayoutRes
que, 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 unLifeCycleObserver
en elLifecycle
de 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 deDialogFragment
que ocasionaba unStackOverflowError
cuando 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 deUseRequireInsteadOfGet
cuando se utilizaba un nombre de variable local que reemplazaba el nombre de propiedad de Kotlin. (b/149891163) - A partir de Fragment
1.2.3
:FragmentContainerView
ya no arroja unUnsupportedOperationException
por usar el constructor incorrecto en la vista previa de diseño. (b/149707833)
Errores conocidos
BottomSheetDialogFragment
ya 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á elviewLifecycleOwner
de Fragment como elLifecycleOwner
para 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 deViewModel
y la devolución de llamada deonCleared()
que recibe). (b/143911815) - Con el lanzamiento de ViewPager2
1.0.0
, las clasesFragmentPagerAdapter
yFragmentStatePagerAdapter
para interactuar conViewPager
dejaron 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
Fragment
de 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.2
ya 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) FragmentContainerView
ya no arroja unaUnsupportedOperationException
cuando 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
FragmentLiveDataObserve
en 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 usarthis
oviewLifecycleOwner
para 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
DialogFragment
que provocaba unStackOverflowError
cuando 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
UseRequireInsteadOfGet
cuando se utilizaba un nombre de variable local que reemplazaba el nombre de propiedad de Kotlin. (b/149891163) FragmentContainerView
ya no arroja unaUnsupportedOperationException
cuando 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
viewLifecycleOwner
comoLifecycleOwner
para las llamadas aOnBackPressedDispatcher
enonCreateView()
,onViewCreated()
yonActivityCreated()
. (b/142117657) - Se agregó una nueva verificación de lint que confirma que estás usando la
debugImplementation
correcta 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 API de Fragment que incluyen un equivalente deget
yrequire
. (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
viewLifecycleOwner
cuando se utilizaobserve
a fin de controlar también la versión del método de extensión delivedata-ktx
deobserve
. (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
add
yreplace
que toman una instanciaClass
(o las versiones reificadas de Kotlin) ahora tienen su constructor predeterminado mantenido por ProGuard. (b/148181315) FragmentStatePagerAdapter
yFragmentPagerAdapter
ya no detectan las excepciones que arrojaFragmentManager
cuando 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 deFragmentManager
ya no arroja unaNullPointerException
cuando ya se destruyó la Activity. (b/148189412)
Cambios de dependencia
- Fragment
1.2.1
ahora 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:
FragmentContainerView
es el contenedor recomendado para los fragmentos agregados de forma dinámica, con lo que se reemplaza el uso deFrameLayout
y otros diseños. También admite los mismosclass
,android:name
yandroid:tag
opcional como la etiqueta de<fragment>
, pero usa un elementoFragmentTransaction
normal 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 unBundle
opcional de argumentos. Estos métodos usan tuFragmentFactory
para construir una instancia del fragmento que se agregará. También se agregaron afragment-ktx
las extensiones de Kotlin que usan tipos reificados (es decir,fragmentTransaction.replace<YourFragment>(R.id.container)
).- Integración de Lifecycle ViewModel SavedState:
SavedStateViewModelFactory
ahora es el valor predeterminado de fábrica que se utiliza cuando se usanby viewModels()
,by activityViewModels()
, el constructorViewModelProvider
o un objetoViewModelProviders.of()
con un fragmento. - Nuevas comprobaciones de Lint: Se agregó una nueva verificación de Lint que garantiza que utilices
getViewLifecycleOwner()
al observarLiveData
desdeonCreateView()
,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 valorFragmentManager
no nulo al que se agrega el fragmento (puedes usarisAdded()
para determinar si es seguro hacer la llamada). - Baja de
FragmentManager.enableDebugLogging()
: el métodoFragmentManager.enableDebugLogging
estático dejó de estar disponible. FragmentManager ahora respetaLog.isLoggable()
para la etiquetaFragmentManager
, lo que te permite habilitar el registroDEBUG
oVERBOSE
sin volver a compilar tu app.
Errores conocidos
- ProGuard no guarda automáticamente los fragmentos a los que se hace referencia mediante el atributo
class
oandroid:name
en unaFragmentContainerView
, y esto requiere que agregues manualmente una regla de conservación para cada clase de fragmento. (b/142601969) - Cuando agregas un objeto
NavHostFragment
mediante unaclass
oandroid:name
en 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-rc04
cuando 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_CLOSE
yTRANSIT_FRAGMENT_FADE
a 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
INVISIBLE
por 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 objetoFragmentFactory
tambié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-rc03
y 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 observarLiveData
deonCreateView()
,onViewCreated()
oonActivityCreated()
(introducido en Fragment1.2.0-rc01
) ahora usaviewLifecycleOwner
de 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
FragmentContainerView
ahora admite el atributoclass
ademá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 observarLiveData
desdeonCreateView()
,onViewCreated()
oonActivityCreated()
(b/137122478).
Correcciones de errores
- Las devoluciones de llamada de
onDismiss
yonCancel
enDialogFragment
ahora garantizan que laDialogInterface
que se les pasa no es nula y quegetDialog()
muestra que no es nulo cuando se ejecutan. (b/141974033) FragmentContainerView
ahora agrega el fragmento que definen laclass
o elandroid:name
como parte de la inflación, lo que asegura quefindFragmentById()
yfindFragmentByTag()
funcionen posteriormente de inmediato. (b/142520327)- Se corrigió una
IllegalStateException
enFragmentContainerView
que se producía debido al estado que se guardaba. (b/142580713) - Se corrigió una
UnsupportedOperationException
enFragmentContainerView
que se produce cuando la claseFragmentContainerView
está ofuscada (b/142657034).
Errores conocidos
- ProGuard no guarda automáticamente los fragmentos a los que se hace referencia mediante el atributo
class
oandroid:name
en 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 aFragmentContainerView
hasta 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 deFragmentContainerView
e 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
FragmentContainerView
para agregar un fragmento inicial con compatibilidad adicional para los atributos XML opcionalesandroid:name
yandroid:tag
. A diferencia de la etiqueta<fragment>
,FragmentContainerView
usa unaFragmentTransaction
normal para agregar el fragmento inicial, lo que permite operaciones deFragmentTransaction
adicionales enFragmentContainerView
y 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
ClassCastException
que 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-alpha03
y 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.transition
antes 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.transition
en la vista raíz de Fragment al usarFragmentContainerView
. (b/140361893) - El artefacto
fragment-testing
ahora 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.w
en FragmentManager (aosp/1126468).
Errores conocidos
- Los elementos
onInflate()
de Fragment no reciben los atributos adecuados deFragmentContainerView
e 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()
deFragment
dejaron de estar disponibles y se reemplazaron por un solo métodogetParentFragmentManager()
, que muestra el valorFragmentManager
no nulo al que se agregó el fragmento (puedes usarisAdded()
para determinar si es seguro realizar la llamada). (b/140574496) - El método
FragmentManager.enableDebugLogging
estático dejó de estar disponible. FragmentManager ahora respetaLog.isLoggable()
para la etiquetaFragmentManager
, lo que te permite habilitar el registroDEBUG
oVERBOSE
sin 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 vínculo.
Cambios en la API
FragmentContainerView
ahora esfinal
(b/140133091).
Correcciones de errores
FragmentContainerView
ahora 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 vínculo.
Nuevas funciones
SavedStateViewModelFactory
ahora es el valor predeterminado de fábrica que se utiliza cuando se usaby viewModels()
,by activityViewModels()
, el constructorViewModelProvider
oViewModelProviders.of()
con unFragment
. (b/135716331)- Se actualizaron las animaciones predeterminadas que se reproducen al usar
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
yTRANSIT_FRAGMENT_FADE
consetTransition
en unaFragmentTransaction
a 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
FragmentContainerView
como 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 unBundle
opcional de argumentos. Estos métodos usan tuFragmentFactory
para construir una instancia del fragmento que se agregará. También se agregó afragment-ktx
la extensión de Kotlin que usa tipos reificados (es decir,fragmentTransaction.replace<YourFragment>(R.id.container)
) (b/126124987). - Se agregaron las anotaciones de
@MainThread
a 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
FragmentTransaction
yFragmentManager.BackStackEntry
dejaron de estar disponibles. (b/138252944) - El método
setTransitionStyle
enFragmentTransaction
dejó de estar disponible (aosp/1011537). - Muchos de los métodos en
FragmentManager
ya no sonabstract
.FragmentManager
en sí mismo sigue siendoabstract
y 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 enFragmentPagerAdapter
yFragmentStatePagerAdapter
que 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
NullPointerException
que 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
IllegalStateException
que se producían cuando se usabanFragmentPagerAdapter
yFragmentStatePagerAdapter
en 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 vínculo.
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
NullPointerException
cuando aparecía unaFragmentTransaction
que 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 vínculo.
Cambios importantes desde 1.0.0
- fragment-testing: el artefacto
fragment-testing
proporciona una claseFragmentScenario
para 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
FragmentFactory
en unFragmentManager
para 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-ktx
ahora 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.FragmentPagerAdapter
yFragmentStatePagerAdapter
tienen un nuevo constructor que te permite usar el nuevo comportamiento. - Constructor FragmentActivity LayoutId: ahora las subclases de
FragmentActivity
pueden invocar opcionalmente a un constructor enFragmentActivity
que 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
Fragment
pueden invocar a un constructor enFragment
que 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 vínculo.
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 vínculo.
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 vínculo.
Correcciones de errores
- Se corrigió una falla en
FragmentPagerAdapter
yFragmentStatePagerAdapter
que 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 vínculo.
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
NullPointerException
cuando aparecía unaFragmentTransaction
que 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 vínculo.
Correcciones de errores
- Ahora se anidan de forma correcta las devoluciones de llamada de
androidx.lifecycle.Lifecycle
(específicamente relacionadas conSTARTED
,RESUMED
,PAUSED
,STOPPED
yDESTROYED
) para fragmentos anidados. (b/133497591) - Las instancias de
OnBackPressedCallback
registradas 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 vínculo.
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 vínculo.
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
FragmentFactory
instantiate
que 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_FRAGMENT
yUSE_SET_USER_VISIBLE_HINT
deFragmentPagerAdapter
yFragmentStatePagerAdapter
aBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
yBEHAVIOR_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 vínculo.
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.FragmentPagerAdapter
yFragmentStatePagerAdapter
tienen un nuevo constructor que te permite usar el nuevo comportamiento (b/129780800).
Cambios en la API
moveToState(STARTED)
enFragmentScenario
ahora 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 constructorcontentLayoutId
deFragmentActivity
oAppCompatActivity
. (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
restoreSaveState
causada 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
OnBackPressedCallback
agregado con un ciclo de vida de fragmento si elFragmentManager
tení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_HARDWARE
en 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 vínculo.
Nuevas funciones
- Las excepciones arrojadas por FragmentManager ahora incluyen el nombre del fragmento en el mensaje (b/67759402).
Cambios en la API
Fragment
yFragmentActivity
ahora 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
instantiate
de FragmentFactory que toma un argumento Bundle dejó de estar disponible y las apps deberían usar la nueva sobrecarga deinstantiate
que no toma un Bundle. (b/128836103) - Los métodos
FragmentScenario
ahora están anotados correctamente con@StyleRes
. (aosp/924193) FragmentTabHost
quedó 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
@ContentView
en 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
@ContentView
ahora 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,
onNewIntent
paraFragmentActivity
se marca correctamente con@CallSuper
. (b/124120586) - Se solucionó un problema por el que se podía llamar dos veces a
onDismiss()
deDialogFragment
cuando 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
@ContentView
que 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-testing
ahora depende de la versión estable deandroidx.test:core-ktx
1.1.0. (b/121209673)- Ahora puedes usar
openActionBarOverflowOrOptionsMenu
conFragmentScenario
para 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 Bundle
o 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
null
asetTargetFragment()
. (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
BundleSavedStateRegistryOwner
y depende de la biblioteca SavedState, recientemente publicada. (aosp/824380) - Se agregó un delegado de propiedad
by activityViewModels
de Kotlin para recuperar objetos ViewModel asociados con la actividad que los contiene. (b/119050253) - Se amplió el delegado de propiedad
by viewModels
de Kotlin para tomar un método lambda opcional a fin de obtenerViewModelStoreOwner
, lo que te permite pasar el fragmento superior u otroViewModelStoreOwner
personalizado con código comoval viewModel: MyViewModel by viewModels(::requireParentFragment)
. (b/119050253)
Cambios en la API
FragmentScenario
ahora te permite especificar un tema, comoTheme.AppCompat
. (b/119054431) Este es un cambio rotundo.- Se agregó un método
requireView()
que muestra una@NonNull View
o arroja unaIllegalStateException
. (b/120241368) - Se agregó un método
requireParentFragment()
que muestra un@NonNull Fragment
o 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
Bundle
no nulo. (b/119794496) - Los fragmentos eliminados ya no reutilizan su objeto
Lifecycle
si 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
FragmentFactory
en cualquierFragmentManager
para 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-testing
depende deandroidx.test:core:1.0.0-beta01
, en lugar delandroidx.test:core:1.0.0
correcto.