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

Navegación

Navigation es un framework para navegar entre "destinos" dentro de una aplicación para Android que proporciona una API coherente, ya sea que los destinos se implementen como Fragment, Activity o algún otro tipo de componente.

En esta tabla, se enumeran todos los artefactos del grupo androidx.navigation.

Artefacto Versión estable actual Próxima versión potencial Versión beta Versión Alfa
Esta biblioteca se actualizó por última vez el 28 de octubre de 2020

Cómo declarar dependencias

Para agregar una dependencia en Navigation, debes agregar el repositorio Maven de Google a tu proyecto. Consulta 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 nav_version = "2.3.1"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

  // Feature module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:1.0.0-alpha02"
}

Safe Args

Para agregar Safe Args a tu proyecto, incluye la siguiente classpath en tu archivo build.gradle de nivel superior:

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.3.1"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

También debes aplicar uno de los dos complementos disponibles.

Para generar código de lenguaje Java adecuado para Java o módulos combinados de Java y Kotlin, agrega esta línea al archivo build.gradle de tu app o módulo:

apply plugin: "androidx.navigation.safeargs"

Como alternativa, para generar el código de Kotlin adecuado para módulos exclusivos de Kotlin, agrega lo siguiente:

apply plugin: "androidx.navigation.safeargs.kotlin"

Tienes que tener el objeto android.useAndroidX=true en tu archivo gradle.properties, según se indica en Cómo migrar a AndroidX.

Para obtener información acerca del uso de extensiones de Kotlin, consulta la documentación de ktx.

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.

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.0.0-alpha01

28 de octubre de 2020

Lanzamiento de android.navigation:navigation-compose:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

El artefacto navigation-compose proporciona integración entre el componente Navigation y Jetpack Compose. Usa funciones @Composable como los destinos en tu aplicación.

En esta versión inicial, se proporciona lo siguiente:

  • Un NavHost componible que te permite crear un gráfico de navegación mediante un DSL de Kotlin
  • Alcance del ciclo de vida, ViewModel, y el estado recordado a nivel del destino
  • Integración automática con el botón Atrás del sistema
  • Compatibilidad para pasar argumentos, adjuntar vínculos directos a los destinos y retroceder un resultado a destinos anteriores
  • Creación de ayudantes específicos en rememberNavController() y currentBackStackEntryAsState() para permitir elevar el estado y conectar el NavController con elementos componibles fuera de NavHost (como una barra de navegación inferior)

Consulta la guía de composición de Navigation para obtener más información.

Versión 2.3.1

Versión 2.3.1

14 de octubre de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.1. La versión 2.3.1 contiene estas confirmaciones.

Nuevas funciones

  • Se agregaron a la IU de navegación recursos predeterminados de Animator y se recomiendan antes que los recursos de animación predeterminados. (b/167430145)
  • NavOptions ahora anula el código hash e iguala los métodos (b/161586466).
  • Navigation ahora incluye el destino actual en la excepción "Sin destino con ID" de IllegalArgumentException, lo que debería mejorar la experiencia de depuración del desarrollador. (b/168311416)

Correcciones de errores

  • Safe Args ya no ajustará la línea del resultado, incluso si el nombre de la clase del argumento generado tiene más de 100 caracteres. (b/168584987)

Cambios de dependencia

  • navigation-ui ahora depende de DrawerLayout 1.1.1, lo que garantiza que NavigationUI pueda abrir el panel lateral incluso cuando se usan LOCK_MODE_LOCKED_CLOSED o LOCK_MODE_LOCKED_OPEN. (b/162253907)
  • Safe Args ahora depende de KotlinPoet 1.6.0 (aosp/1475911).
  • Safe Args ahora depende de AGP 4.0.1 (aosp/1422337).

Versión 2.3.0

Versión 2.3.0

24 de junio de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0. La versión 2.3.0 contiene estas confirmaciones.

Cambios importantes desde la versión 2.2.0

  • Integración del módulo de funciones: Los artefactos navigation-dynamic-features-runtime y navigation-dynamic-features-fragment te permiten navegar a los destinos definidos en módulos de funciones y controlan automáticamente la instalación de esos módulos según sea necesario. Consulta Cómo navegar con módulos de funciones para obtener más información.
  • Prueba de navegación: El artefacto navigation-testing proporciona un TestNavHostController que te permite establecer el destino actual y verificar la pila de actividades después de las operaciones de navegación. Consulta Navegación de prueba para obtener más información.
  • Muestra de un resultado: El objeto NavBackStackEntry asociado con cada destino en la pila de actividades de Navigation ahora te permite acceder a un elemento SavedStateHandle apto para el almacenamiento de cantidades pequeñas de estado guardado que se deberían asociar con una entrada de pila de actividades específica. Consulta Cómo mostrar un resultado al destino anterior para obtener más información.
  • Compatibilidad con NavigationUI para Openable: Se reemplazaron todos los usos de DrawerLayout en NavigationUI con la interfaz Openable más genérica, que se agregó en CustomView 1.1.0 y que DrawerLayout implementó en DrawerLayout 1.1.0.
  • Compatibilidad con acciones y tipos de MIME en vínculos directos: Los vínculos directos se expandieron para admitir app:action y app:mimeType, además del elemento app:uri disponible anteriormente. NavController ahora admite la navegación mediante cualquier combinación de estos campos a través de la nueva clase de NavDeepLinkRequest. Consulta Cómo navegar con NavDeepLinkRequest para obtener más información.

Errores conocidos

  • La compatibilidad con las acciones de vínculos directos y los tipos de MIME aún no está disponible en Manifest Merger. Hasta que se complete ese trabajo, los elementos <intent-filter> generados del elemento <nav-graph> en tu manifiesto no incluirán tu tipo de MIME en su elemento <data> ni en tu <action> personalizada. Debes agregar manualmente un <intent-filter> apto a tu manifiesto.

Versión 2.3.0-rc01

10 de junio de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0-rc01. La versión 2.3.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un NullPointerException para reemplazar una instancia de un destino sin argumentos por otra con argumentos con singleTop. (b/158006669)
  • Todas las excepciones de destination is unknown arrojadas por NavController ahora tienen información de depuración adicional para ayudar a determinar el estado de NavController. (b/157764916)

Versión 2.3.0-beta01

20 de mayo de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0-beta01. La versión 2.3.0-beta01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un problema por el que el objeto Lifecycle del elemento NavBackStackEntry no se actualizaba correctamente después del cierre del proceso. (b/155218371)
  • Las instancias OnDestinationChangedListener registradas antes de llamar al objeto setGraph() ahora se envían correctamente al destino restablecido después del cierre del proceso. (b/155218371)
  • Cuando usas el objeto singleTop, ahora se actualizan correctamente los argumentos del elemento NavBackStackEntry y los argumentos actualizados se envían a todas las instancias OnDestinationChangeListener. (b/156545508)

Actualizaciones de dependencias

Versión 2.3.0-alpha06

29 de abril de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0-alpha06. (La versión 2.3.0-alpha06 contiene estas confirmaciones).

Nuevas funciones

  • Los vínculos directos se expandieron para admitir app:action y app:mimeType, además del elemento app:uri disponible anteriormente. NavController ahora admite la navegación mediante cualquier combinación de estos campos a través de la nueva clase de NavDeepLinkRequest. (b/136573074, b/135334841)

Cambios en la API

  • Se expandió considerablemente la compatibilidad con DSL de Kotlin para los destinos de navegación dinámica. (b/148969800)

Correcciones de errores

  • Se solucionó un error en el que se ignoraban los intents de vínculos directos al usar un destino de inicio anidado. (b/154532067)

Versión 2.3.0-alpha05

15 de abril de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0-alpha05. La versión 2.3.0-alpha05 contiene estas confirmaciones.

Nuevas funciones

  • Para las inclusiones de gráficos dinámicos con <include-dynamic>, ya no necesitas especificar app:graphPackage y se utilizará una configuración predeterminada en la que se agrega el sufijo moduleName a applicationId después de un punto. Si necesitas personalizar tu graphPackage, ahora se admite un marcador de posición ${applicationId}. (b/152696768)
  • El DSL de Kotlin de Navigation Graph ahora expone un defaultArguments Map para las acciones y duplica la capacidad de establecer valores predeterminados en elementos <action> en los archivos XML de Navigation. (b/150345605)

Correcciones de errores

  • A partir de Navigation 2.2.2: Se corrigió un IllegalStateException que se genera si usas un vínculo directo al destino de inicio de tu gráfico cuando tienes varias instancias de NavHostFragment en tu Activity. (b/147378752)

Actualizaciones de dependencias

Versión 2.3.0-alpha04

18 de marzo de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0-alpha04. La versión 2.3.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó compatibilidad con la actividad del módulo de funciones y los destinos de fragmentos en el DSL de Kotlin de Navigation. (b/148969800)

Cambios en la API

  • La clase DynamicExtras ya no usa un patrón de compilador y ahora se puede construir directamente. (aosp/1253671)
  • DynamicActivityNavigator ahora toma un Context en su constructor en lugar de una Activity. (aosp/1250252)

Correcciones de errores

  • NavigationUI ya no ignora las etiquetas vacías (es decir, un destino con android:label=””) y ahora define correctamente el título en una string vacía. (b/148679860)

Actualizaciones de dependencias

  • Los artefactos de Navigation Dynamic Features ahora dependen de Play Core 1.6.5. (b/149556401)

Versión 2.3.0-alpha03

4 de marzo de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0-alpha03. La versión 2.3.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • En lugar de basarse en la clase DrawerLayout concreta, AppBarConfiguration ahora usa la interfaz Openable que se introdujo en CustomView 1.1.0-alpha02 (que DrawerLayout implementa como DrawerLayout 1.1.0-alpha04), lo que te permite usar implementaciones personalizadas de Openable con NavigationUI. (b/129030452)

Correcciones de errores

  • Las reglas de ProGuard de navigation-common-ktx ahora solo mantienen correctamente las clases de NavArgs que se utilizan en lugar de todas las instancias de NavArgs. (b/150213558)

Cambios de dependencia

  • Navigation revirtió su dependencia de Core 1.2.0 y ahora depende de Core 1.1.0 para evitar que los desarrolladores tengan que trasladarse a una dependencia más nueva cuando Navigation no depende de API nuevas en Core 1.2.0.

Versión 2.3.0-alpha02

19 de febrero de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0-alpha02. La versión 2.3.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • NavBackStackEntry ahora te permite acceder a un SavedStateHandle apto para el almacenamiento de cantidades pequeñas de estado guardado que se deberían asociar con una entrada de pila de actividades específica. Consulta Cómo mostrar un resultado para ver un ejemplo de caso práctico. (b/79672220)

Cambios en la API

  • Se agregaron métodos de conveniencia de getCurrentBackStackEntry() y getPreviousBackStackEntry() a fin de facilitar la recuperación de una NavBackStackEntry para los destinos actuales y anteriores. (b/79672220)

Correcciones de errores

  • navigateUp() ahora pasa KEY_DEEP_LINK_INTENT y los argumentos del destino actual al destino anterior cuando inicias la app en tu propia pila de tareas. (b/147456890)

Cambios de dependencia

Versión 2.3.0-alpha01

5 de febrero de 2020

Lanzamiento de androidx.navigation:navigation-*:2.3.0-alpha01. La versión 2.3.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

  • El artefacto navigation-testing nuevo proporciona una clase TestNavHostController. Esta clase ofrece una alternativa al uso de un NavController ficticio durante pruebas de Navigation que te permite definir el destino actual y verificar la pila de actividades después de operaciones de navegación. (b/140884273)
  • El nuevo navigation-dynamic-features-fragment (y su dependencia transitiva, navigation-dynamic-features-runtime) te permite incluir destinos o gráficos de navegación enteros (mediante <include-dynamic>) desde módulos de funciones, lo que proporciona una instalación optimizada de módulos de funciones cuando navegas a esos destinos. Consulta Cómo navegar con módulos de funciones para obtener más información. (b/132170186)

Correcciones de errores

  • A partir de Navigation 2.2.1: Los vínculos directos sin parámetros de búsqueda ahora ignoran correctamente todos los parámetros de búsqueda en lugar de anexarlos a elementos {argument} finales o no hacen coincidir el vínculo directo. (b/147447512)
  • A partir de Navigation 2.2.1: Se actualizaron las reglas de ProGuard de navigation-ui para DrawerArrowDrawable a fin de garantizar que no se requiera android.enableJetifier=true. (b/147610424)
  • A partir de Navigation 2.2.1: El módulo navigation-common-ktx ahora tiene un nombre de paquete de manifiesto único en lugar de compartir el mismo nombre de paquete de manifiesto que navigation-runtime-ktx. (aosp/1141947)

Actualizaciones de dependencias

Versión 2.2.2

Versión 2.2.2

15 de abril de 2020

Lanzamiento de androidx.navigation:navigation-*:2.2.2. La versión 2.2.2 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un IllegalStateException con vínculo directo al destino de inicio de tu gráfico cuando tienes varias instancias de NavHostFragment en tu Activity. (b/147378752)
  • NavigationUI ya no ignora las etiquetas vacías (es decir, un destino con android:label=””) y ahora define correctamente el título en una string vacía. Se lanzó anteriormente en Navigation 2.3.0-alpha04. (b/148679860)
  • Las reglas de ProGuard de navigation-common-ktx ahora solo mantienen correctamente las clases de NavArgs que se utilizan en lugar de todas las instancias de NavArgs. Se lanzó anteriormente en Navigation 2.3.0-alpha03. (b/150213558

Actualizaciones de dependencias

Versión 2.2.1

Versión 2.2.1

5 de febrero de 2020

Lanzamiento de androidx.navigation:navigation-*:2.2.1. La versión 2.2.1 contiene estas confirmaciones.

Correcciones de errores

  • Los vínculos directos sin parámetros de búsqueda ahora ignoran correctamente todos los parámetros de búsqueda en lugar de anexarlos a elementos {argument} finales o no hacen coincidir el vínculo directo. (b/147447512)
  • Se actualizaron las reglas de ProGuard de navigation-ui para DrawerArrowDrawable a fin de garantizar que no se requiera android.enableJetifier=true. (b/147610424)
  • El módulo navigation-common-ktx ahora tiene un nombre de paquete de manifiesto único en lugar de compartir el mismo nombre de paquete de manifiesto que navigation-runtime-ktx. (aosp/1141947)

Actualizaciones de dependencias

Versión 2.2.0

Versión 2.2.0

22 de enero de 2020

Lanzamiento de androidx.navigation:navigation-*:2.2.0. La versión 2.2.0 contiene estas confirmaciones.

Cambios importantes desde la versión 2.1.0

  • NavBackStackEntry: Ahora puedes llamar a NavController.getBackStackEntry() pasando el ID de un destino o gráfico de navegación en la pila de actividades. El objeto NavBackStackEntry que se muestra proporciona un elemento LifecycleOwner controlado por Navigation, ViewModelStoreOwner (el mismo que se muestra para NavController.getViewModelStoreOwner()) y SavedStateRegistryOwner, además de proporcionar los argumentos utilizados para iniciar ese destino.
  • Integración de Lifecycle ViewModel SavedState: SavedStateViewModelFactory ahora es el valor predeterminado de fábrica que se utiliza cuando se usan by navGraphViewModels() o el constructor ViewModelProvider con un ViewModelStoreOwner que muestran NavController.getBackStackEntry() o NavController.getViewModelStoreOwner().
  • Compatibilidad con parámetros de búsqueda para vínculos directos: Los vínculos directos que tienen parámetros de búsqueda ahora admiten parámetros reordenados. Los argumentos que tienen un valor predeterminado o que pueden ser nulos ahora son opcionales a la hora de hacer coincidir vínculos directos.
  • Compatibilidad mejorada para animaciones: NavHostFragment ahora usa FragmentContainerView de Fragment 1.2.0, que corrige problemas de ordenamiento z de animación y despacho de inserciones de ventana a elementos Fragment.

Versión 2.2.0-rc04

18 de diciembre de 2019

Lanzamiento de androidx.navigation:navigation-*:2.2.0-rc04. La versión 2.2.0-rc04 contiene estas confirmaciones.

Correcciones de errores

  • Se ajustaron las animaciones de atenuación predeterminadas que usa navigation-ui para que coincidan con las ajustadas en Fragment 1.2.0-rc04. (b/145769814)

Versión 2.2.0-rc03

4 de diciembre de 2019

Lanzamiento de androidx.navigation:navigation-*:2.2.0-rc03. La versión 2.2.0-rc03 contiene estas confirmaciones.

Correcciones de errores

  • Se solucionó un problema relacionado con el análisis de vínculos directos cuando se usan parámetros de consulta y un argumento como la última parte de la ruta de acceso que impedía analizar más de un carácter del argumento de ruta final. (b/144554689)
  • Se solucionó un problema relacionado con el análisis de vínculos directos en los casos en los que los parámetros opcionales recibían "@null" en lugar de null. (b/141613546)
  • Ahora, NavHostFragment restablece correctamente el gráfico después de un cambio de configuración cuando se usa con FragmentContainerView. (b/143752103)

Cambios de dependencia

  • Navigation ahora depende de Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03, Activity 1.1.0-rc03, and Fragment 1.2.0-rc03 cuando corresponde.

Versión 2.2.0-rc02

7 de noviembre de 2019

Lanzamiento de androidx.navigation:navigation-*:2.2.0-rc02. La versión 2.2.0-rc02 contiene estas confirmaciones.

Cambios de dependencia

  • Navigation ahora depende de androidx.lifecycle 2.2.0-rc02.

Versión 2.2.0-rc01

23 de octubre de 2019

Lanzamiento de androidx.navigation:navigation-*:2.2.0-rc01 sin cambios desde 2.2.0-beta01. La versión 2.2.0-rc01 contiene estas confirmaciones.

Versión 2.2.0-beta01

9 de octubre de 2019

Lanzamiento de androidx.navigation:navigation-*:2.2.0-beta01. La versión 2.2.0-beta01 contiene estas confirmaciones.

Nuevas funciones

  • NavDestination y sus subclases ahora anulan toString() para proporcionar más información útil durante la depuración. (b/141264986)

Cambios en el comportamiento

  • Ahora se ignoran los parámetros de búsqueda adicionales cuando se hacen coincidir vínculos directos en lugar de provocar que falle la coincidencia. (b/141482822)

Correcciones de errores

  • Se corrigió un problema en el que se ignoraban los argumentos en la ruta de un vínculo directo si también se especificaban los parámetros de búsqueda. (b/141505755)
  • La extensión de Kotlin navArgs() en Activity ahora muestra un mejor mensaje de error más claro cuando no hay extras. (b/141408999)
  • Las clases de Java Directions generadas por Safe Args ahora contienen valores predeterminados. (b/141099045)
  • Las clases de Java Args generadas por Safe Args ahora contienen valores predeterminados. (b/140123727)
  • Si se utiliza un objeto Toolbar, NavigationUI ya no anima el cambio de texto cuando se mueve entre dos destinos de nivel superior. (b/140848160)

Versión 2.2.0-alpha03

18 de septiembre de 2019

Lanzamiento de androidx.navigation:navigation-*:2.2.0-alpha03. La versión 2.2.0-alpha03 contiene estas confirmaciones.

Cambios en el comportamiento

  • Llamar a setViewModelStore() después de llamar a setGraph ahora genera un objeto IllegalStateException. Esto siempre debe establecerlo el objeto NavHost como parte de la configuración inicial para garantizar que todas las instancias de NavBackStackEntry tengan un almacenamiento coherente para las instancias de ViewModel. (aosp/1111821)

Correcciones de errores

  • Se corrigió un error de tipo ConcurrentModificationException cuando se usaban instancias de ViewModel asociadas a varias instancias de ViewModelStore en el ámbito de gráfico de navegación diferentes. (aosp/1112257)

Versión 2.2.0-alpha02

5 de septiembre de 2019

Lanzamiento de androidx.navigation:navigation-*:2.2.0-alpha02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Los vínculos directos que tienen parámetros de búsqueda ahora admiten parámetros reordenados. Los argumentos que tienen un valor predeterminado o que pueden ser nulos ahora son opcionales a la hora de hacer coincidir vínculos directos. (b/133273839)
  • Ahora puedes llamar a NavController.getBackStackEntry() pasando el ID de un destino o gráfico de navegación en la pila de actividades. El objeto NavBackStackEntry que se muestra proporciona un elemento LifecycleOwner controlado por Navigation, ViewModelStoreOwner (el mismo que se muestra para NavController.getViewModelStoreOwner()) y SavedStateRegistryOwner, además de proporcionar los argumentos utilizados para iniciar ese destino. (aosp/1101691, aosp/1101710)

Correcciones de errores

  • Se corrigió un problema en el que agregar un objeto NavHostFragment a ViewPager2 generaba un error relacionado con un IllegalArgumentException. (b/133640271)
  • NavInflater ahora evita llamar a getResourceName() innecesariamente, lo que acelera el tiempo de inflación hasta en un 40%. (b/139213740)

Versión 2.2.0-alpha01

7 de agosto de 2019

Lanzamiento de androidx.navigation:navigation-*:2.2.0-alpha01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • SavedStateViewModelFactory ahora es la versión de fábrica predeterminada que se utiliza cuando se usa by navGraphViewModels() o el constructor ViewModelProvider con un objeto ViewModelStoreOwner mostrado por NavController.getViewModelStoreOwner(). (b/135716331)

Cambios en la API

Correcciones de errores

  • NavHostFragment ahora usa FragmentContainerView, que corrige problemas de ordenamiento z de animación y despacho de inserciones de ventana a elementos Fragment. (b/137310379)

Versión 2.1.0

Versión 2.1.0

5 de septiembre de 2019

Lanzamiento de androidx.navigation:navigation-*:2.1.0. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Cambios importantes desde la versión 2.0.0

  • Alcance de ViewModels a un gráfico de navegación: Ahora puedes crear objetos ViewModel con un alcance en el nivel del gráfico de navegación utilizando el objeto by navGraphViewModels() delegado de propiedad para usuarios de Kotlin mediante bibliotecas de -ktx la API de getViewModelStoreOwner() agregada a NavController. Para obtener más información, consulta Cómo compartir datos relacionados con la IU entre destinos con ViewModel.
  • Destinos de diálogo: Ahora puedes crear destinos de <dialog> que mostrarán un objeto DialogFragment cuando navigate a ellos. NavHostFragment admite destinos de diálogo de forma predeterminada. Para obtener más información, consulta Cómo crear un destino a partir de un DialogFragment.
  • Navegación por URI: Ahora puedes navigate mediante un objeto Uri, que usa el elemento <deepLink> que agregaste a un destino para navegar hasta allí. Para obtener más información, consulta Cómo navegar con URI.
  • NavHostController: Se movieron a NavHostController las API utilizadas específicamente para construir un objeto NavHost personalizado, lo que permite que las implementaciones conecten sus elementos NavController a los LifecycleOwner, OnBackPressedDispatcher y ViewModelStore de hosting.

Versión 2.1.0-rc01

7 de agosto de 2019

Lanzamiento de androidx.navigation:navigation-*:2.1.0-rc01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Cambios en la API

  • Se dio de baja la API getViewModelStore() en NavController que se introdujo en 2.1.0-alpha02. (aosp/1091021)

Versión 2.1.0-beta02

19 de julio de 2019

Lanzamiento de androidx.navigation:*:2.1.0-beta02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Correcciones de errores

  • Se quitó una dependencia no intencional de JaCoCo que se introdujo en 2.1.0-beta01. (b/137782950)

Versión 2.1.0-beta01

17 de julio de 2019

Lanzamiento de androidx.navigation:*:2.1.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • NavigationUI ahora anima la eliminación del botón Arriba cuando se usa setupWithNavController() con Toolbar o CollapsingToolbarLayout. (b/131403621)

Correcciones de errores

  • Se corrigió un problema de sincronización cuando se usan varios elementos NavHostFragment con el mismo contenedor con findNavController(). b/136021571

Versión 2.1.0-alpha06

2 julio de 2019

Lanzamiento de androidx.navigation:*:2.1.0-alpha06. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Se movió el atributo app:navGraph que usa NavHostFragment al artefacto navigation-runtime. Los navegadores personalizados que se pueden agregar a través de XML deben usar este atributo para lograr la integración con el panel Host del Editor de Navigation. (b/133880955)

Cambios en la API

  • Se dio de baja la API de getViewModelStore() en NavController para priorizar el nuevo método getViewModelStoreOwner() que muestra un objeto ViewModelStoreOwner. (aosp/987010)
  • La implementación de destinos de ventana flotante, como <dialog>, se generalizó en una interfaz de marcador, FloatingWindow, que ahora implementan todos los destinos <dialog>. Los métodos de NavigationUI para interactuar con la barra superior de aplicaciones ahora ignoran los destinos FloatingWindow. (b/133600763)

Cambios en el comportamiento

  • La navegación ahora mantiene correctamente su estado sincronizado con lo que se ve en la pantalla cuando se utiliza un destino <dialog>. Como consecuencia, Navigation ahora muestra automáticamente los destinos <dialog> cuando navegas a un destino sin diálogo y sin actividad, como <fragment>. (b/134089818)

Correcciones de errores

  • Navigation ahora suprime la animación que se produce cuando se recrea la actividad al administrar un vínculo directo, lo que corrige un destello visual. (b/130362979)
  • Se corrigió un error por el cual la pila de actividades de Navigation no estaba sincronizada cuando se mostraba un elemento Fragment a medida que se agregaba el fragmento inicial. (b/133832218)

Versión 2.1.0-alpha05

5 de junio de 2019

Lanzamiento de androidx.navigation:*:2.1.0-alpha05. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Cambios en la API

  • Se cambió el nombre de las API relacionadas con el host en NavController se las trasladó a una nueva subclase de NavController: NavHostController. (aosp/966091)
  • Se reemplazó el método NavController setHostOnBackPressedDispatcherOwner() por el objeto NavHostController del método setOnBackPressedDispatcher() y ahora requiere que llames a setLifecycleOwner() antes de llamar al método. (aosp/965409)
  • NavHostController ahora contiene un método enableOnBackPressed(boolean) que reemplaza la clase NavHostOnBackPressedManager que anteriormente mostraba setHostOnBackPressedDispatcherOwner(). (aosp/966091)

Correcciones de errores

  • Se corrigió un problema en el que la pila de actividades no era correcta después de la navegación mediante URI. (b/132509387)
  • Los vínculos directos administrados automáticamente por NavController ahora solo se activan una vez. (b/132754763)

Versión 2.1.0-alpha04

16 de mayo de 2019

Lanzamiento de androidx.navigation:*:2.1.0-alpha04. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Correcciones de errores

  • NavHostFragment respeta correctamente el elemento app:defaultNavHost cuando se interceptan los eventos del botón Atrás del sistema, lo que corrige una regresión en Navigation 2.1.0-alpha03. b/132077777
  • DialogFragmentNavigator ahora administra correctamente las operaciones popBackStack() y navigateUp(). b/132576764
  • Se corrigió un problema de IllegalStateException: unknown destination during restore cuando se navegaba repetidamente entre gráficos anidados. b/131733658

Versión 2.1.0-alpha03

7 de mayo de 2019

Lanzamiento de androidx.navigation:*:2.1.0-alpha03. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Errores conocidos

  • NavHostFragment continúa interceptando el botón Atrás del sistema a pesar de usar app:defaultNavHost="false". b/132077777

Nuevas funciones

  • Ahora puedes crear destinos <dialog> que mostrarán un objeto DialogFragment cuando uses un elemento navigate en ellos. NavHostFragment admite los destinos de diálogo de forma predeterminada. b/80267254
  • Además de llamar a navigate con un ID de recurso o una instancia de NavDirections, ahora puedes navegar mediante un elemento Uri, que utiliza el <deepLink> que agregaste a un destino para navegar al destino correcto. b/110412864

Cambios en el comportamiento

  • Las animaciones predeterminadas que proporciona NavigationUI se aceleraron de 400 ms a 220 ms para que coincidan con la velocidad de animación predeterminada de actividades y fragmentos. b/130055522

Cambios en la API

  • Se dio de baja el método createFragmentNavigator() de NavHostFragment y se movió su funcionalidad al nuevo método onCreateNavController() a fin de dejar más claro que este es el punto de entrada correcto para agregar navegadores personalizados cuando se subclasifica NavHostFragment. b/122802849
  • Se agregó un método hasDeepLink() a NavDestination para permitirte verificar si un elemento Uri determinado se puede administrar por ese destino o, en el caso de un NavGraph, por cualquier destino del gráfico de navegación. b/117437718

Correcciones de errores

  • Los argumentos predeterminados ahora se pasan correctamente a instancias de OnDestinationChangedListener. b/130630686
  • NavHostFragment ahora intercepta los eventos Atrás del sistema con OnBackPressedDispatcher, lo que corrige un problema que se generaba cuando se realizaba la navegación condicional en los métodos del ciclo de vida de Fragment al mostrar un Fragment. b/111598096
  • Para Safe Args, un objeto android:defaultValue=”@null” con un elemento app:argType sin especificar ahora se infiere correctamente como un argumento de string. b/129629192

Versión 2.1.0-alpha02

3 de abril de 2019

Lanzamiento de androidx.navigation:*:2.1.0-alpha02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Ahora puedes crear objetos ViewModel con un ámbito de gráfico de navegación mediante el delegado de propiedad by navGraphViewModels() para usuarios de Kotlin o mediante la API de getViewModelStore() agregada a NavController. b/111614463

Cambios en la API

  • Ahora puedes agregar un elemento app:targetPackage a un destino <activity> para limitar el nombre del paquete coincidente. Admite app:targetPackage="${applicationId}" para restringir el paquete a tu propio ID de aplicación. b/110975456

Correcciones de errores

  • Ya no se analiza el elemento android:name para los destinos <activity> en un tiempo de inflación de clase, lo que evita que se produzcan ClassNotFoundExceptions cuando se usan funciones dinámicas. b/124538597

Versión 2.1.0-alpha01

19 de marzo de 2019

Esta es la primera versión Alfa de Navigation 2.1.0.

Cambios de dependencia

  • Navigation ahora depende de androidx.core:core:1.0.1 y androidx.fragment:fragment:1.1.0-alpha05. Esta versión también quita la dependencia de androidx.legacy:legacy-support-core-utils:1.0.0. b/128632612

Cambios en la API

  • Se agregó un nuevo método de Navigation.createNavigateOnClickListener(NavDirections) como alternativa a la creación de un objeto de escucha de clics con un ID de recurso y un paquete. b/127631752
  • Se dio de baja FragmentNavigator.instantiateFragment. La implementación predeterminada ahora usa FragmentFactory para crear instancias de fragmentos. b/119054429

Correcciones de errores

  • La navegación ya no envía un elemento Bundle nulo cuando hay argumentos adjuntos a un destino, lo que corrige el error cuando se usa android:defaultValue="@null". b/128531879
  • Safe Args ahora depende de KotlinPoet 1.1.0, lo que soluciona el error con los nombres de paquetes muy largos. b/123654948

Versión 2.0.0

Versión 2.0.0

14 de marzo de 2019

Lanzamiento de Navigation 2.0.0 sin cambios desde 2.0.0-rc02.

Versión 2.0.0-rc02

6 de marzo de 2019

Navigation 2.0.0-rc02 proporciona nuevos artefactos con el ID de grupo de androidx.navigation y cambia sus dependencias a los equivalentes de AndroidX.

El comportamiento de 2.0.0-rc02 es idéntico al de Navigation 1.0.0-rc02, y no se deberían necesitar cambios en tu código para actualizar desde 1.0.0-rc02, además de actualizar tus dependencias para que coincidan con las nuevas.

Tu proyecto debe migrarse a AndroidX para usar versiones 2.X de Navigation. La versión 1.0 estable de Navigation será la última versión que use las dependencias de la biblioteca de compatibilidad. Todo desarrollo posterior a 1.0 se basará en AndroidX y se compilará en función de la versión estable 2.0.

Dependencias anteriores a AndroidX

Para las versiones de Navigation anteriores a AndroidX, incluye las siguientes dependencias:

dependencies {
    def nav_version = "1.0.0"

    implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
    implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}

Para Safe Args, agrega la siguiente ruta de clase en tu archivo build.gradle de nivel superior.

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
    }
}

Versión 1.0.0

Versión 1.0.0

14 de marzo de 2019

Lanzamiento de Navigation 1.0.0 sin cambios desde 1.0.0-rc02.

Versión 1.0.0-rc02

26 de febrero de 2019

Esta es la segunda versión potencial para la versión estable de Navigation 1.0.0. Esta versión contiene una serie de correcciones de errores.

Correcciones de errores

  • Se corrigió un error por el cual se ignoraba popBackStack() si el gráfico raíz no tenía un ID. b/126251695
  • El objeto navigateUp() ahora procesa correctamente la navegación a las tareas de tu app cuando se lo llama después de gestionar un vínculo directo sin FLAG_ACTIVITY_NEW_TASK. b/126082008
  • Se corrigió un error en el que ActivityNavigator.applyPopAnimationsToPendingTransition no aplicaba la animación emergente de salida correcta. b/126237567
  • El código de Kotlin generado por Safe Args ahora escapa correctamente las palabras clave de Kotlin como in y fun en el nombre del paquete asociado con la clase R. b/126020455

Versión 1.0.0-rc01

21 de febrero de 2019

Esta es una versión potencial para la versión estable 1.0.0 de Navigation. Esta versión contiene una corrección de error.

Correcciones de errores

  • Se corrigió un error que ocurría cuando se usaban elementos Fragment y operaciones de navegación singleTop. b/124294805

Versión 1.0.0-beta02

12 de febrero de 2019

Esta versión incluye una serie de mejoras pequeñas y correcciones de errores importantes.

Nuevas funciones

  • Ahora puedes usar 0 como android:defaultValue para los argumentos reference. b/124248602

Cambios en el comportamiento

  • Las coincidencias exactas de vínculos directos ahora tienen prioridad sobre los vínculos directos con coincidencias de argumentos o .*. b/123969518

Correcciones de errores

  • popBackStack() y navigateUp ahora muestran correctamente false cuando muestran el último destino de la pila de actividades, lo que corrige una regresión que se introdujo en 1.0.0-beta01. b/123933201
  • Navigation ahora configura de manera correcta el ClassLoader durante la restauración del estado de la instancia guardada, lo que evita problemas cuando se usan clases personalizadas en el estado guardado de Navigator o en argumentos enviados a un NavDestination. b/123893858
  • Las clases NavArgs generadas por Safe Args ya no fallan cuando se restablece un argumento Parcelable[] desde el estado de instancia guardado. b/123963545
  • Safe Args ahora borra correctamente las clases de Kotlin generadas de manera innecesaria. b/124120883

Versión 1.0.0-beta01

4 de febrero de 2019

Esta es la primera versión Beta de Navigation. En el futuro, se espera que la API de Navigation se mantenga estable hasta la próxima versión, a menos que haya un problema crítico. Esta versión contiene algunas correcciones de errores y cambios de comportamiento.

Cambios en el comportamiento

  • Navigation ahora garantiza que los valores predeterminados de los argumentos se traten de forma idéntica durante el tiempo de ejecución y mediante Safe Args. Como consecuencia, solo los argumentos con app:argType="reference" pueden tener un valor predeterminado que apunte a otro recurso (por ejemplo, @color/colorPrimary). Si intentas usar un valor predeterminado de referencia con un app:argType diferente, se generará una excepción cuando se analice el XML de navegación. b/123551990
  • Safe Args ahora depende del complemento de Gradle para Android 3.3.0. aosp/888413
  • Safe Args ahora depende de Kotlin 1.3.20. aosp/888414

Correcciones de errores

  • Safe Args ahora se puede usar en módulos de biblioteca y funciones en todas las versiones del complemento de Gradle para Android. b/121304903
  • Se corrigió una regresión que generaba que una sola operación popBackStack() mostrara todas las copias de un destino desde la parte superior de la pila de actividades, en lugar de hacerlo de un solo destino a la vez. b/123552990
  • Se solucionó un error en el que el estado FragmentNavigator se desincronizaba con el estado de NavController, lo que provocaba una IllegalStateException cuando se intentaba restablecer la pila de actividades. b/123803044
  • Se solucionó un error en el que la flecha hacia atrás procesada por NavigationUI no aparecía cuando se usaba ProGuard con ofuscación. b/123449431
  • El código generado por Safe Args ahora se procesa correctamente mediante un app:argType que apunta hacia a una clase interna estática en el formato .OuterClass$InnerClass. b/123736741
  • El código Java generado por Safe Args ahora procesa correctamente las acciones globales y los destinos anidados de forma profunda. b/123347762

Versión 1.0.0-alpha11

23 de enero de 2019

Esta es una revisión de 1.0.0-alpha10 que corrige un problema relacionado con Safe Args.

Correcciones de errores

  • Se corrigió un error en el que Safe Args no podía importar la clase de Directions asociada con las acciones globales. b/123307342

Versión 1.0.0-alpha10

23 de enero de 2019

Errores conocidos

  • Safe Args no puede importar la clase de Directions asociada con las acciones globales. b/123307342

Esta versión contiene cambios importantes en la API. Consulta la sección Cambios rotundos a continuación.

Nuevas funciones

  • Los usuarios de Kotlin ahora pueden usar el delegado de la propiedad by navArgs() para obtener de forma diferida una referencia a una clase NavArgs generada por Safe Args en un objeto Activity o Fragment. b/122603367
  • Safe Args ahora te permite generar código de Kotlin aplicando el complemento androidx.navigation.safeargs.kotlin. El código de Kotlin está diseñado específicamente para módulos exclusivos de Kotlin, con argumentos predeterminados y clases inmutables sobre el patrón de compilador, que aún está disponible a través del complemento androidx.navigation.safeargs anterior. b/110263087

Cambios en el comportamiento

  • Los vínculos directos coincidentes ahora están sesgados hacia el vínculo directo con más argumentos coincidentes. b/118393029
  • Llamar a setGraph() en un NavController ahora restablecerá la pila de actividades. b/111450672
  • Los vínculos directos desconocidos ya no arrojan una IllegalStateException, pero se ignoran, lo que corrige los errores de NavHostFragment anidados o múltiples. b/121340440

Cambios rotundos

  • El método NavOptions.applyPopAnimationsToPendingTransition() que permite aplicar animaciones emergentes a una actividad se movió a ActivityNavigator. b/122413117
  • Safe Args ahora evita duplicar clases idénticas para acciones sin argumentos. El tipo de datos que se muestra para los métodos sin argumentos de las clases NavDirections generadas ahora es NavDirections. b/123233147
  • Las clases de Directions generadas por Safe Args ya no tienen un constructor público; solo debes interactuar con los métodos estáticos generados. b/123031660
  • Las clases de NavDirections generadas por Safe Args ya no tienen un constructor público; solo deben generarse a través de los métodos estáticos en las clases generadas de Directions. b/122963206
  • El Bundle que se muestra a partir de los getArguments() de NavDirections ahora se marca como @NonNull en lugar de @Nullable. b/123243957

Correcciones de errores

  • NavDeepLinkBuilder ahora procesa correctamente varios PendingIntent simultáneos en el mismo destino mediante el uso de los argumentos que pasas para determinar la unicidad. b/120042732
  • NavController ahora procesa correctamente las operaciones de popBackStack() cuando se usa un NavHostFragment anidado u otros fragmentos secundarios con una pila de actividades. b/122770335
  • NavigationUI ahora configura correctamente la descripción del contenido del botón Arriba. b/120395362
  • Las clases de Directions generadas por Safe Args ahora procesan correctamente las acciones globales que tienen el mismo ID que una acción en un destino. b/122962504
  • Las clases de NavDirections generadas por Safe Args ahora tienen valores de hashCode() iguales cuando equals() muestra el valor "verdadero". b/123043662
  • FragmentNavigator ahora arroja un mensaje de error mejor si intentas implementar FragmentTransactions personalizadas en el FragmentManager de NavHostFragment. Siempre debes usar getChildFragmentManager(). b/112927148

Versión 1.0.0-alpha09

18 de diciembre de 2018

Esta versión contiene cambios importantes en la API. Consulta la sección Cambios rotundos a continuación.

Decidimos no continuar desarrollando el artefacto android.arch.navigation:navigation-testing. Si bien resultó ser útil para las pruebas internas de NavController, recomendamos utilizar estrategias de prueba alternativas, como simular la instancia de NavController, para verificar que se estén realizando las llamadas correctas a navigate(). Este enfoque se desarrolla de forma detallada en la charla de actividad única de la Android Dev Summit 2018, y seguiremos trabajando en la documentación adicional específica acerca de las pruebas con Navigation.

Nuevas funciones

  • Los objetos MenuItem con menuCategory="secondary" ya no mostrarán la pila de actividades cuando se usen con los métodos NavigationUI. b/120104424
  • AppBarConfiguration ahora te permite establecer una instancia de resguardo de OnNavigateUpListener a la que se puede llamar cuando navController.navigateUp() muestra false. (b/79993862, b/120690961)

Cambios rotundos

  • Cuando usas un <argument> con un argType="reference", Navigation ya no analiza la referencia, sino que proporciona el ID del recurso sin procesar. b/111736515
  • Ahora se muestra onNavDestinationSelected() para el destino de inicio de tu gráfico de navegación de manera predeterminada, lo que hace que sea coherente con los métodos setup. Agrega menuCategory="secondary" a tu MenuItem para evitar que se muestre la pila de actividades. aosp/852869
  • Los métodos fromBundle() de las clases de Args generadas ahora toman un valor de Bundle no nulo en lugar de un valor de Bundle que puede ser nulo. aosp/845616

Correcciones de errores

  • Ahora se analizan correctamente los argumentos desde los vínculos directos, como el argType correcto, en lugar de hacerlo siempre como strings. b/110273284
  • Navigation ahora exporta de manera correcta sus recursos públicos. b/121059552
  • Safe Args ahora es compatible con el complemento de Gradle para Android 3.4 Canary 4 y versiones posteriores. b/119662045

Versión 1.0.0-alpha08

6 de diciembre de 2018

Esta versión contiene cambios importantes en la API. Consulta la sección Cambios rotundos a continuación.

Nuevas funciones

  • A partir de ahora, las etiquetas de destino que se usen con métodos de NavigationUI reemplazarán automáticamente las instancias de {argName} en el objeto android:label con el argumento correcto. b/80267266
  • Ahora, Navigation depende de la biblioteca de compatibilidad 28.0.0 b/120293333

Cambios rotundos

  • Se modificó el nombre de OnNavigatedListener por OnDestinationChangedListener. b/118670572
  • Ahora OnDestinationChangedListener también pasa el Bundle de los argumentos. aosp/837142
  • Se quitaron los atributos app:clearTask y app:launchDocument, así como sus métodos asociados. Usa app:popUpTo con la raíz de tu gráfico para quitar todos los destinos de tu pila de actividades. b/119628354
  • Ahora, ActivityNavigator.Extras usa un patrón Builder y agrega la posibilidad de configurar cualquier marca de Intent.FLAG_ACTIVITY_. aosp/828140
  • Se cambió el nombre de NavController.onHandleDeepLink por handleDeepLink. aosp/836063
  • Muchas clases y métodos no destinados para subclases, como NavOptions, NavInflater, NavDeepLinkBuilder y AppBarConfiguration, quedaron como final. aosp/835681
  • Se quitó el método NavHostFragment.setGraph() que se dio de baja. aosp/835684
  • Se quitó el método NavigationUI.navigateUp(DrawerLayout, NavController) que se dio de baja. aosp/835684
  • La creación de fragmentos se trasladó a FragmentNavigator, y ahora es más fácil delegar la creación de fragmentos a FragmentFactory. b/119054429
  • El constructor de NavGraphNavigator ya no usa un Context. aosp/835340
  • Ahora, NavigatorProvider es una clase en lugar de una interfaz. No cambió la funcionalidad del NavigatorProvider que muestra getNavigatorProvider(). aosp/830660
  • Se quitó NavDestination.navigate(). En su lugar, llama a navigate() en el Navigator. aosp/830663
  • Se realizó una refactorización importante de Navigator: se eliminó la necesidad de contar con OnNavigatorNavigatedListener y, en su lugar, navigate muestra el NavDestination al que se navegó.
  • Las instancias de Navigator ya no pueden enviar eventos emergentes al NavController. Considera usar una OnBackPressedCallback para interceptar las instancias en las que se presione el botón Atrás, y llama a navController.popBackStack(). aosp/833716

Correcciones de errores

  • popUpTo ahora funciona de manera coherente cuando el destino es un elemento <navigation>. b/116831650
  • Se corrigieron varios errores que generaban una IllegalArgumentException al usar gráficos anidados. (b/118713731, b/113611083, b/113346925, b/113305559).
  • Ahora el atributo dataPattern de los destinos <activity> completará los argumentos de argumentos que no son de string mediante una llamada a toString(). b/120161365

Safe Args

  • Safe Args admite los objetos con serialización, incluidos los valores de enumeración. Los tipos de enumeración pueden establecer un valor predeterminado mediante el literal de enumeración sin el nombre de clase (p. ej., app:defaultValue="READ"). b/111316353
  • Safe Args admite arreglos de todos los tipos compatibles. b/111487504
  • Ahora, Safe Args ignora las subcarpetas de los directorios de recursos. b/117893516
  • Safe Args agrega anotaciones @Override cuando corresponde. b/117145301

Versión 1.0.0-alpha07

29 de octubre de 2018

Nuevas funciones

Cambios rotundos

  • Se integró el módulo navigation-testing-ktx a navigation-testing artifact y ya no se publicará.
  • Ahora, el artefacto navigation-testing tiene una dependencia en la biblioteca estándar de Kotlin. Se modificó la API para que sea más coherente con las convenciones de Kotlin, aunque puedes seguir usándola para pruebas escritas en Java.
  • Ya no se admiten los gráficos de navegación registrados del manifiesto de metadatos. b/118355937
  • Las acciones ya no se pueden adjuntar a los destinos de <activity>. aosp/785539

Correcciones de errores

  • Los vínculos directos ahora analizan correctamente los parámetros de búsqueda. b/110057514
  • Los destinos de Activity ahora aplican correctamente todas las animaciones de entrada y salida. b/117145284
  • Se corrigió la falla que ocurre después de los cambios de configuración cuando se usan atributos Navigator personalizados. b/110763345

Safe Args

  • Los argumentos seguros ahora tienen una dependencia fija en el complemento de Gradle para Android 3.2.1. b/113167627
  • Ahora se pueden generar Directions para las clases internas. b/117407555
  • Se corrigió un error con la generación de Directions para un gráfico de <include>. b/116542123

Versión 1.0.0-alpha06

20 de septiembre de 2018

Nuevas funciones

Cambios en la API

  • Cambio rotundo: Ahora el método navigate() de Navigator toma un parámetro Navigator.Extras.
  • Ahora el método getGraph() de NavController es NonNull. b/112243286

Correcciones de errores

  • NavigationUI.setupWithNavController() ya no filtra reproducciones si se usa con vistas de destinos individuales. b/111961977
  • Ahora solo se llama una vez a onSaveState() de Navigator. b/112627079

Safe Args

  • Ahora las clases Directions de destino de Navigation extienden su clase de Directions del nivel superior, si es que existe. b/79871405
  • Ahora las clases Directions y Args tienen una implementación toString() útil. b/111843389

Versión 1.0.0-alpha05

10 de agosto de 2018

Correcciones de errores

  • Se corrigió un error que ocasionaba un comportamiento incorrecto de la pila de actividades. b/111907708
  • Se corrigió un error de clases Generated Args en equals(). b/111450897
  • Se corrigió un error de compilación en Safe Args. b/109409713
  • Se corrigió una conversión de identificadores de recursos a nombres de Java. b/111602491
  • Se corrigieron mensajes de error sobre la nulidad en el complemento de Safe Args.
  • Se agregaron anotaciones de nulidad que faltaban.

Versión 1.0.0-alpha04

19 de julio de 2018

Navigation 1.0.0-alpha04 y los complementos asociados Safe Args de Gradle incluyen varios cambios de API, cambios en los comportamientos y correcciones de errores.

Cambios de comportamiento/API

  • NavHostFragment siempre establecerá el fragmento actual como fragmento de navegación principal a fin de garantizar que los administradores de fragmentos secundarios aparezcan antes que el NavController externo. b/111345778

Safe Args

  • Cambio rotundo: app:type se reemplazó por app:argType para evitar conflictos con otras bibliotecas, como ConstraintLayout 2.0.0-alpha1. b/111110548
  • Ahora es posible hacer clic en los mensajes de error de Safe Args. b/111534438.
  • Ahora las clases Args confirman que los atributos NonNull en realidad no son nulos. b/111451769
  • Se agregaron anotaciones NonNull adicionales a clases generadas por NavDirections y Args. b/111455455 b/111455456

Correcciones de errores

  • Se corrigió un problema con el botón Atrás del sistema después de establecer un vínculo directo con un destino de fragmento. b/111515685

Versión 1.0.0-alpha03

12 de julio de 2018

Navigation 1.0.0-alpha03 y los complementos asociados Safe Args de Gradle incluyen varios cambios de API, cambios en los comportamientos y correcciones de errores.

Cambios de comportamiento/API

  • Se agregó un método NavigationUI.setupWithNavController para la Barra Google. b/109868820
  • Se agregó un método NavigationUI.setupWithNavController para CollapsingToolbarLayout. b/110887183
  • Ahora popBackStack() se muestra como falso cuando la pila de actividades está vacía o cuando el ID de destino proporcionado no está en la pila de actividades. b/110893637
  • Ahora FragmentNavigator ignora las operaciones de navegación una vez que FragmentManager tiene el estado de guardado y evita las excepciones de "No se puede realizar esta acción después de onSaveInstanceState". b/110987825

Safe Args

  • Cambio rotundo: Los caracteres que no sean alfanuméricos en los nombres de acciones y argumentos se reemplazarán por el uso de mayúsculas y minúsculas en los nombres de métodos NavDirections correspondientes.
    • P. ej., se convertirá DemoController.index en setDemoControllerIndex. b/79995048
    • P. ej., se convertirá action_show_settings en actionShowSettings. b/79642240
  • Cambio rotundo: Ahora los argumentos se consideran no nulos de manera predeterminada. Para permitir valores nulos en strings y argumentos parcelables, agrega app:nullable="true". b/79642307
  • Ahora puedes usar app:type="long" con defaultValues in en forma de "123L". b/79563966
  • Ahora los argumentos parcelables están permitidos mediante el uso de un nombre de clase calificado para app:type. El único valor predeterminado permitido es "@null". b/79563966
  • Ahora las clases de Args implementan equals() y hashCode(). b/79642246
  • Ahora se puede aplicar el complemento Safe Args a proyectos de bibliotecas. b/80036553
  • Ahora se puede aplicar el complemento Safe Args a proyectos destacados. b/110011752

Correcciones de errores

  • Se corrigieron errores de navegación durante los métodos de ciclo de vida del fragmento. b/109916080
  • Se corrigieron problemas de navegación en gráficos anidados varias veces. b/110178671
  • Se solucionaron problemas durante el uso de setPopUpTo con el primer destino en el gráfico. b/109909461
  • Se solucionó el problema por el que todos los valores app:defaultValue se pasaban como strings. b/110710788
  • Ahora el aapt2 empaquetado con el complemento Gradle de Android 3.2 Beta 01 agrega reglas de mantenimiento para cada atributo android:name en los archivos XML de navegación. b/79874119
  • Se solucionó la pérdida de memoria durante el reemplazo del FragmentNavigator predeterminado. b/110900142

Versión 1.0.0-alpha02

7 de junio de 2018

Cambios en el comportamiento

  • Ahora FragmentNavigator usa setReorderingAllowed(true). b/109826220

  • Ahora Navigation usará URLDecodes para los argumentos analizados a partir de URL de vínculo directo. b/79982454

Correcciones de errores

  • Se corrigió un error IllegalStateException que se generaba cuando se llamaba a la navegación desde métodos de ciclos de vida de Fragment. b/79632233

  • Ahora la navegación depende de la Biblioteca de compatibilidad 27.1.1 para corregir el parpadeo cuando se usan animaciones. b/80160903

  • Se corrigió un error IllegalArgumentException que se generaba cuando se usaba defaultNavHost="true" como fragmento secundario. b/79656847

  • Se corrigió un error StackOverflowError que se generaba cuando se usaba NavDeepLinkBuilder. b/109653065

  • Se corrigió un error IllegalArgumentException que se generaba cuando se navegaba hacia atrás en un gráfico anidado. b/80453447

  • Se corrigió un error relacionado con la superposición de Fragment que se generaba cuando se usaba launchSingleTop. b/79407969

  • Ahora la navegación crea la pila de actividades sintética correcta para gráficos anidados. b/79734195

  • Ahora NavigationUI resaltará el elemento correcto cuando se use un gráfico anidado como MenuItem. b/109675998

Cambios en la API

  • Se dio de baja el atributo clearTask para acciones y la API asociada en NavOptions. b/80338878

  • Se dio de baja el atributo launchDocument para acciones y la API asociada en NavOptions. b/109806636

Versión 1.0.0-alpha01

8 de mayo de 2018

Navigation proporciona un framework para compilar la navegación desde la app. Esta versión inicial es 1.0.0-alpha01.