Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Fragment

Segmenta tu app en varias pantallas independientes alojadas en un objeto Activity.
Actualización más reciente Versión estable actual Próxima versión potencial Versión beta Versión Alfa
1 de octubre de 2020 1.2.5 - 1.3.0-beta01 -

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 problema existente, haz clic en el botón de estrella.

Cómo crear un error nuevo

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-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 estado Lifecycle en INITIALIZING, siempre que el fragmento no se haya movido a CREATED. (b/159662173)

Cambios en la API

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() en CREATED, 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 un FragmentManager no nulo siempre se considerarán activos. (aosp/1422346)
  • Los efectos predeterminados de los fragmentos TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE y TRANSIT_FRAGMENT_FADE ahora usan Animator, en lugar de Animation. (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 sobre Animations, 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 de Transition o aquellos en los que un Animator y un Transition en un fragmento individual se ejecuten a la vez. (b/149569323)
  • Ahora se ejecutan los elementos enterTransition y exitTranstion 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 a STARTED 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 a findFragmentById() o findFragmentByTag() desde la devolución de llamada onAttachFragment(). (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 las Transition 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 objeto ActivityResultLauncher, en el método de ciclo de vida de onCreate() de un fragmento. (b/161464278)
  • Llamar a registerForActivityResult() después de onCreate() 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 API OnContextAvailableListener presentada en Activity 1.2.0-alpha08 para restablecer el estado de FragmentManager. Los objetos de escucha agregados a las subclases de FragmentActivity se ejecutarán después de este objeto de escucha. (I513da)

Correcciones de errores

  • Ahora se pasa ActivityOptions cuando se usa startIntentSenderForResult(). (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 de onResume() ocasiona que FragmentManager 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 operaciones hide() y show() 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 de CREATED, STARTED o RESUMED, en lugar de trasladar siempre el elemento Fragment al estado RESUMED. (b/159662750)
  • Se agregó una alternativa a la API de FragmentScenario del objeto onFragment en forma del método withFragment 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 objeto setMaxLifecycle() para implementar el parámetro moveToState(), 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 objeto ViewTreeSavedStateRegistryOwner 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() en FragmentActivity y Fragment dejó de estar disponible. Se agregó un FragmentOnAttachListener nuevo para brindar una alternativa más flexible, que permite la delegación de onAttachFragment() 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 otro DialogFragment 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

Cambios en la API

  • Las API de setFragmentResult() y setFragmentResultListener() ahora toman un valor no nulo de Bundle y FragmentResultListener, respectivamente. Para borrar de forma explícita un objeto de escucha o un resultado establecido previamente, usa los nuevos métodos clearFragmentResult() y clearFragmentResultListener(). (b/155416778)
  • Las extensiones de Kotlin setFragmentResultListener() que toman un valor lambda ahora están identificadas como inline. (b/155323404)

Cambios en el comportamiento

  • Los objetos startActivityForResult(), startIntentSenderForResult() y requestPermissions que habían dejado de estar disponibles en Fragment ahora usan ActivityResultRegistry de forma interna, lo que quita la restricción sobre el uso de los bits inferiores (inferiores a 0xFFFF) 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) y DialogFragment(@LayoutRes int) para aclarar que deben llamarse desde el constructor sin argumentos de tus subclases cuando se usa el FragmentFactory 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 menos STARTED. (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() y requestPermissions()/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étodo prepareCall() a registerForActivityResult(). (aosp/1278717)

Correcciones de errores

  • El getViewLifecycleOwner() del fragmento ahora se detiene antes de llamar a onSaveInstanceState(), 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 de DialogFragment con FragmentContainerView. (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 de Fragment ahora son final. (b/152439361)

Correcciones de errores

  • Se corrigió una regresión que se introdujo en Fragment 1.3.0-alpha02 cuando se usaba BottomSheetDialogFragment. (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 de FragmentLiveDataObserve en las clases DialogFragment, 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 usar this o viewLifecycleOwner para las llamadas a observe. (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 Activity 1.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 Activity 1.2.0-alpha02 a fin de controlar los flujos startActivityForResult()+onActivityResult() y requestPermissions()+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 que onCreateView() 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 en onViewCreated() (al que se llama inmediatamente antes de onActivityCreated()), mientras que el resto del código de inicialización debe estar en onCreate(). Para recibir una devolución de llamada específicamente cuando el onCreate() de la actividad está completo, se debe registrar un LifeCycleObserver en el Lifecycle de la actividad en onAttach(), y se lo debe quitar una vez que se reciba la devolución de llamada de onCreate(). (b/144309266)

Correcciones de errores

  • A partir de Fragment 1.2.3: Se corrigió un error de DialogFragment que ocasionaba un StackOverflowError cuando se llamaba a getLayoutInflater() desde onCreateDialog(). (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 de UseRequireInsteadOfGet 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 un UnsupportedOperationException 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

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 de ViewModel y la devolución de llamada de onCleared() que recibe). (b/143911815)
  • Con el lanzamiento de ViewPager2 1.0.0, las clases FragmentPagerAdapter y FragmentStatePagerAdapter para interactuar con ViewPager 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 de Fragment. De esta manera, se corrige una regresión que se introdujo en Fragment 1.2.1. (b/149665169
  • Las reglas de lint de require___() que se agregaron en Fragment 1.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 una UnsupportedOperationException 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 a onSaveInstanceState(), lo que refleja el comportamiento del ciclo de vida del fragmento. Anteriormente, se lanzó en Fragment 1.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 Fragment 1.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 clases DialogFragment, 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 usar this o viewLifecycleOwner para las llamadas a observe. (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 un StackOverflowError cuando se llamaba a getLayoutInflater() desde onCreateDialog(). (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 una UnsupportedOperationException 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 como LifecycleOwner para las llamadas a OnBackPressedDispatcher en onCreateView(), onViewCreated() y onActivityCreated(). (b/142117657)
  • Se agregó una nueva verificación de lint que confirma que estás usando la debugImplementation correcta cuando utilizas el artefacto fragment-testing. (b/141500106)
  • Los fragmentos ahora sugieren el uso de los métodos require___() asociados para mensajes de error más descriptivos en lugar de checkNotNull(get___()), requireNonNull(get___()) o get___()!! para todas las API de Fragment que incluyen un equivalente de get y require. (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 utiliza observe a fin de controlar también la versión del método de extensión de livedata-ktx de observe. (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 y replace que toman una instancia Class (o las versiones reificadas de Kotlin) ahora tienen su constructor predeterminado mantenido por ProGuard. (b/148181315)
  • FragmentStatePagerAdapter y FragmentPagerAdapter ya no detectan las excepciones que arroja FragmentManager cuando se ejecuta finishUpdate(). (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 a onInflate() antes de onCreate() cuando está en el diseño. (aosp/1215856)
  • Una llamada a toString() en una instancia de FragmentManager ya no arroja una NullPointerException cuando ya se destruyó la Activity. (b/148189412)

Cambios de dependencia

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 de FrameLayout y otros diseños. También admite los mismos class, android:name y android:tag opcional como la etiqueta de <fragment>, pero usa un elemento FragmentTransaction 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 marcos de trabajo y de AndroidX (al usar Transition 1.3.0) antes de llamar a onDestroyView().
  • add() y replace() basados en clases: Se agregaron nuevas sobrecargas de add() y replace() en FragmentTransaction, que toman una Class<? extends Fragment> y un Bundle opcional de argumentos. Estos métodos usan tu FragmentFactory para construir una instancia del fragmento que se agregará. También se agregaron a fragment-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 usan by viewModels(), by activityViewModels(), el constructor ViewModelProvider o un objeto ViewModelProviders.of() con un fragmento.
  • Nuevas comprobaciones de Lint: Se agregó una nueva verificación de Lint que garantiza que utilices getViewLifecycleOwner() al observar LiveData desde onCreateView(), onViewCreated() o onActivityCreated().
  • Baja de getFragmentManager(): Los métodos getFragmentManager() y requireFragmentManager() de Fragment dejaron de estar disponibles y se reemplazaron por un solo método getParentFragmentManager(), que muestra el valor FragmentManager no nulo al que se agrega el fragmento (puedes usar isAdded() para determinar si es seguro hacer la llamada).
  • Baja de FragmentManager.enableDebugLogging(): El método FragmentManager.enableDebugLogging estático dejó de estar disponible. FragmentManager ahora respeta Log.isLoggable() para la etiqueta FragmentManager, lo que te permite habilitar el registro DEBUG o VERBOSE 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 o android:name en una FragmentContainerView, y esto requiere que agregues de forma manual una regla de conservación para cada clase de fragmento. (b/142601969)
  • Cuando agregas un objeto NavHostFragment mediante una class o android:name en XML con FragmentContainerView, no puedes usar el elemento findNavController() en onCreate() 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 a onViewCreated() 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 a CREATED, 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 y TRANSIT_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() y getFragmentFactory() para aclarar que la configuración de un objeto FragmentFactory también afectará a los FragmentManagers secundarios. (aosp/1170095)

Cambios de dependencia

  • Los fragmentos ahora dependen de Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03 y Activity 1.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 observar LiveData de onCreateView(), onViewCreated() o onActivityCreated() (introducido en Fragment 1.2.0-rc01) ahora usa viewLifecycleOwner de sintaxis de acceso a la propiedad de Kotlin, en lugar de getViewLifecycleOwner() (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 atributo class además de android: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 observar LiveData desde onCreateView(), onViewCreated() o onActivityCreated() (b/137122478).

Correcciones de errores

  • Las devoluciones de llamada de onDismiss y onCancel en DialogFragment ahora garantizan que la DialogInterface que se les pasa no es nula y que getDialog() muestra que no es nulo cuando se ejecutan (b/141974033).
  • FragmentContainerView ahora agrega el fragmento que definen la class o el android:name como parte de la inflación, lo que asegura que findFragmentById() y findFragmentByTag() funcionen posteriormente de inmediato (b/142520327).
  • Se corrigió una IllegalStateException en FragmentContainerView que se producía debido al estado que se guardaba (b/142580713).
  • Se corrigió una UnsupportedOperationException en FragmentContainerView que se produce cuando la clase FragmentContainerView está ofuscada (b/142657034).

Errores conocidos

  • ProGuard no guarda automáticamente los fragmentos a los que se hace referencia mediante el atributo class o android:name en una FragmentContainerView, y esto requiere que agregues manualmente una regla de conservación para cada clase de fragmento. Inhabilitamos la regla de Lint que sugiere pasar a FragmentContainerView hasta que esto se corrija mediante aapt2 (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 de FragmentContainerView e inutilizaba casos, como NavHostFragment (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 opcionales android:name y android:tag. A diferencia de la etiqueta <fragment>, FragmentContainerView usa una FragmentTransaction normal para agregar el fragmento inicial, lo que permite operaciones de FragmentTransaction adicionales en FragmentContainerView 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> por FragmentContainerView (b/139830056).

Correcciones de errores

  • Se corrigió un error ClassCastException que se producía cuando se usaba androidx.transition (b/140680619).
  • Al utilizar Transition 1.3.0-beta01, los fragmentos ahora esperan las transiciones androidx.transition (además de las transiciones y las animaciones de marco, que se corrigieron en Fragment 1.2.0-alpha03 y Fragment 1.2.0-alpha02, respectivamente) para terminar antes de enviar onDestroyView() (aosp/1119841).
  • Al utilizar Transition 1.3.0-beta01, los fragmentos ahora cancelan correctamente las transiciones androidx.transition antes de comenzar transiciones o animaciones nuevas en el mismo contenedor (aosp/1119841).
  • Se solucionó un problema en la API nivel 17 y versiones inferiores cuando se usaban transiciones androidx.transition en la vista raíz de tu fragmento al usar FragmentContainerView (b/140361893).
  • El artefacto fragment-testing ahora depende de AndroidX Test 1.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() del fragmento no reciben los atributos adecuados de FragmentContainerView e inutilizan casos, como NavHostFragment (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() y requireFragmentManager() de Fragment dejaron de estar disponibles y se reemplazaron por un solo método getParentFragmentManager(), que muestra el valor FragmentManager no nulo al que se agregó el fragmento (puedes usar isAdded() para determinar si es seguro realizar la llamada) (b/140574496).
  • El método estático FragmentManager.enableDebugLogging dejó de estar disponible. FragmentManager ahora respeta Log.isLoggable() para la etiqueta FragmentManager, lo que te permite habilitar el registro DEBUG o VERBOSE 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

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 enviar onDestroyView() (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 usa by viewModels(), by activityViewModels(), el constructor ViewModelProvider o ViewModelProviders.of() con un Fragment (b/135716331).
  • Se actualizaron las animaciones predeterminadas que se reproducen al usar TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE y TRANSIT_FRAGMENT_FADE con setTransition en una FragmentTransaction 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 de FrameLayout, 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 en fragment-ktx (aosp/1090757).
  • Se agregaron nuevas sobrecargas de add() y replace() en FragmentTransaction, que toman una Class<? extends Fragment> y un Bundle opcional de argumentos. Estos métodos usan tu FragmentFactory para construir una instancia del fragmento que se agregará. También se agregó a fragment-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 de Fragment (b/127272564).
  • Las API relacionadas con el título de la ruta de navegación en FragmentTransaction y FragmentManager.BackStackEntry dejaron de estar disponibles (b/138252944).
  • El método setTransitionStyle en FragmentTransaction dejó de estar disponible (aosp/1011537).
  • Muchos de los métodos en FragmentManager ya no son abstract. FragmentManager en sí mismo sigue siendo abstract y no se debería instanciar ni extender directamente; debe continuar obteniendo solo una instancia existente de getSupportFragmentManager(), getChildFragmentManager(), etc.

Correcciones de errores

  • Desde Fragmento 1.1.0-rc04: los fragmentos ahora cancelan correctamente las transiciones pospuestas en los fragmentos que se resaltan (b/138251858).
  • Desde Fragment 1.1.0-rc03: se solucionó un problema por el cual llamar a postponeEnterTransition() con un tiempo de espera superior a una vez no cancelaba los tiempos de espera anteriores (b/137797118).
  • Desde Fragment 1.1.0-rc02: se corrigió una falla en FragmentPagerAdapter y FragmentStatePagerAdapter 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 usaban FragmentPagerAdapter y FragmentStatePagerAdapter en las pruebas con Robolectric (b/137201343).

Versión 1.2.0-alpha01

2 de 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 a onViewCreated(), lo que garantiza que tu vista siempre tenga las inserciones correctas (b/135945162).

Correcciones de errores

  • Se corrigió un NullPointerException cuando aparecía un FragmentTransaction que usaba setPrimaryNavigationFragment() antes de replace() (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 la versión 2.0.1

  • fragment-testing: el artefacto fragment-testing proporciona una clase FragmentScenario 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 un FragmentManager 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 y by 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 una FragmentTransaction. Esto reemplaza setUserVisibleHint(), que dejó de estar disponible. FragmentPagerAdapter y FragmentStatePagerAdapter 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 en FragmentActivity que toma un ID de R.layout, que indica el diseño que se debe establecer como vista de contenido como alternativa para invocar a setContentView() en onCreate(). 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 en Fragment que toma un ID de R.layout, que indica el diseño que se debe usar para este fragmento como alternativa para anular onCreateView(). El diseño inflado se puede configurar en onViewCreated().
  • 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 y FragmentStatePagerAdapter que se producía cuando se eliminaba el elemento actual (b/137209870).

Versión 1.1.0-rc01

2 de 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() o hide() mientras se está ejecutando la transición (b/133385058).
  • Se corrigió un NullPointerException cuando aparecía un FragmentTransaction que usaba setPrimaryNavigationFragment() antes de replace() (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 con STARTED, RESUMED, PAUSED, STOPPED y DESTROYED) para fragmentos anidados (b/133497591).
  • Las instancias de OnBackPressedCallback registradas en el elemento onCreate() 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 que 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 a startPostponedEnterTransition() (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 un Bundle (aosp/953856).
  • Cambio rotundo: se cambiaron los nombres de las constantes RESUME_ONLY_CURRENT_FRAGMENT y USE_SET_USER_VISIBLE_HINT de FragmentPagerAdapter y FragmentStatePagerAdapter por BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT y BEHAVIOR_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 una FragmentTransaction. Esto reemplaza setUserVisibleHint(), que dejó de estar disponible. FragmentPagerAdapter y FragmentStatePagerAdapter tienen un nuevo constructor que te permite usar el nuevo comportamiento (b/129780800).

Cambios en la API

  • moveToState(STARTED) en FragmentScenario ahora solo se puede invocar en dispositivos con API nivel 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á a onCreateView() 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 etiqueta <fragment> en XML y el constructor contentLayoutId de FragmentActivity o AppCompatActivity (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 un OnBackPressedCallback agregado con un ciclo de vida de fragmento si el FragmentManager 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 y FragmentActivity 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 de instantiate de FragmentFactory que toma un argumento Bundle dejó de estar disponible y las apps deberían usar la nueva sobrecarga de instantiate que no toma un Bundle (b/128836103).
  • Los métodos FragmentScenario ahora están anotados correctamente con @StyleRes (aosp/924193).
  • El elemento FragmentTabHost ahora es 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() y setPrimaryNavigationFragment() con un fragmento adjunto a un FragmentManager diferente, se muestra una IllegalStateException, en lugar de una falla en silencio (aosp/904301).

Correcciones de errores

  • Ahora, onNewIntent para FragmentActivity se marca correctamente con @CallSuper (b/124120586).
  • Se solucionó un problema por el que se podía llamar dos veces a onDismiss() de DialogFragment cuando se usaba getDialog().dismiss() o getDialog().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 XML de diseño se debe inflar como alternativa para anular onCreateView(). Se recomienda consultar el trabajo relacionado en onViewCreated() (aosp/837619).
  • fragment-testing ahora depende de la versión estable de androidx.test:core-ktx 1.1.0 (b/121209673).
  • Ahora puedes usar openActionBarOverflowOrOptionsMenu con FragmentScenario 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 una IllegalStateException (b/121196360).
  • Se agregó una nota que indica que no se deberían anular getLifecycle(), getViewLifecycleOwner() y getViewLifecycleOwnerLiveData(), 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 a setTargetFragment() (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 obtener ViewModelStoreOwner, lo que te permite pasar el fragmento principal u otro ViewModelStoreOwner personalizado con código como val viewModel: MyViewModel by viewModels(::requireParentFragment) (b/119050253).

Cambios en la API

  • FragmentScenario ahora te permite especificar un tema, como Theme.AppCompat (b/119054431]). Este es un cambio rotundo.
  • Se agregó un método requireView() que muestra una @NonNull View o arroja una IllegalStateException (b/120241368).
  • Se agregó un método requireParentFragment() que muestra un @NonNull Fragment o arroja una IllegalStateException (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 una FragmentFactory (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 cualquier FragmentManager 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 de androidx.test:core:1.0.0-beta01, en lugar del androidx.test:core:1.0.0 correcto.