Navigation
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 |
---|---|---|---|---|
navigation-* | 2.3.3 | - | - | - |
navigation-compose | - | - | - | 1.0.0-alpha07 |
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.3" // 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-alpha07" }
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.3" 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 solo 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.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
Navigation Compose versión 1.0.0
Versión 1.0.0-alpha07
10 de febrero de 2021
Lanzamiento de androidx.navigation:navigation-compose:1.0.0-alpha07
. La versión 1.0.0-alpha07 contiene estas confirmaciones.
Actualizaciones de dependencias
- Navigation Compose ahora depende de Lifecycle ViewModel Compose 1.0.0-alpha01 para brindar compatibilidad con
viewModel()
en los destinoscomposable
. (I7a374) NavHost
ahora usa el nuevoLocalOnBackPressedDispatcherOwner
de Activity-Compose 1.3.0-alpha01 para obtener elOnBackPressedDispatcher
configurado enNavController
. (I65b12)
Versión 1.0.0-alpha06
28 de enero de 2021
Lanzamiento de androidx.navigation:navigation-compose:1.0.0-alpha06
. La versión 1.0.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se agregó un método de extensión
getBackStackEntry(route: String)
enNavController
que muestra elNavBackStackEntry
asociado. (If8931)
Versión 1.0.0-alpha05
13 de enero de 2021
Lanzamiento de androidx.navigation:navigation-compose:1.0.0-alpha05
. La versión 1.0.0-alpha05 contiene estas confirmaciones.
Se actualizó para depender de Compose 1.0.0-alpha10.
Versión 1.0.0-alpha04
16 de diciembre de 2020
Lanzamiento de androidx.navigation:navigation-compose:1.0.0-alpha04
. La versión 1.0.0-alpha04 contiene estas confirmaciones.
- Se actualizó la compatibilidad con Compose
1.0.0-alpha09
.
Versión 1.0.0-alpha03
2 de diciembre de 2020
Lanzamiento de androidx.navigation:navigation-compose:1.0.0-alpha03
. La versión 1.0.0-alpha03 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema en el que
popBackStack()
ynavigateUp()
no funcionaban luego de un cambio en la configuración o en el cierre o la recreación del proceso. (Icea47, b/173281473) - Ahora puedes navegar a un gráfico anidado dentro de NavHost, ya que funciona correctamente. (I0948d, b/173647694)
Versión 1.0.0-alpha02
11 de noviembre de 2020
Lanzamiento de androidx.navigation:navigation-compose:1.0.0-alpha02
. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Navigation Compose ahora admite NavOptions para usar operaciones popUpTo y launchSingleTop. (If96c3, b/171468994)
- Se agregó una función de navegación que toma una ruta en lugar de un ID que te permite construir gráficos anidados en el DSL de Navigation Compose. (I1661d)
- startDestination ahora aparece antes de la ruta en la lista de parámetros para un NavHost. (Ie620e)
- Ahora puedes crear un gráfico con la ruta como destino inicial fuera de un elemento NavHost que admite composición. (Iceb75)
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
- Ayudantes específicos de Compose en
rememberNavController()
ycurrentBackStackEntryAsState()
para permitir elevar el estado y conectar el objetoNavController
con elementos que admiten composición fuera deNavHost
(como una barra de navegación inferior)
Consulta la guía de navegación con Compose para obtener más información.
Versión 2.3.3
Versión 2.3.3
27 de enero de 2021
Lanzamiento de androidx.navigation:navigation-*:2.3.3
. La versión 2.3.3 contiene estas confirmaciones.
Correcciones de errores
- Ya no se produce una falla cuando se muestra una
NavBackStackEntry
antes de queLifecycle
se mueva aCREATED
. (Ie3ba3) - Se corrigió la regresión que se producía por b/171364502 en la que la navegación hacia una actividad con un valor del recurso de animación de
0
ocasionaba unaResourceNotFoundException
. (I7aedb, b/176819931)
Versión 2.3.2
Navigation versión 2.3.2
2 de diciembre de 2020
Lanzamiento de androidx.navigation:navigation-*:2.3.2
. La versión 2.3.2 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una regresión en
NavigationUI
donde el uso de un destino<activity>
cononNavDestinationSelected
no podía navegar por la actividad. (I22e34, b/171364502) - Se solucionó un problema por el cual
navigation-dynamic-features-fragment
provocaba que se navegara al destino recién instalado varias veces. (aosp/1486056, b/169636207) - Se solucionó un problema por el que no se enviaban los argumentos predeterminados a las instancias
OnDestinationChangedListener
cuando se usabalaunchSingleTop
. (I2c5cb) - Se solucionó un problema por el que la navegación hacia un gráfico de navegación anidado no creaba una nueva instancia de gráfico en la pila de actividades. (Ifc831)
- Se solucionó un problema por el que el uso de
navigate()
con unpopUpTo
que quitaba el último destino en un gráfico de navegación no se destruiría y se quitaba inmediatamente el gráfico de navegación de la pila de actividades. (I910a3) - SafeArgs de Navigation ahora usa KotlinPoet versión 1.7.2, lo que agrega compatibilidad con el modo explícito de la API de Kotlin. (I918b5)
- Ahora
NavHostFragment.findNavController(Fragment)
también comprueba la vista de decoración de raíz de un DialogFragment, además de las comprobaciones existentes de la jerarquía de Fragment y la jerarquía de vistas de Fragment. Esto te permite probar fragmentos de diálogo que usan Navigation conFragmentScenario
yNavigation.setViewNavController()
. (I69e0d)
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 Navigation recursos predeterminados de Animator, los cuales 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 queNavigationUI
pueda abrir el panel lateral incluso cuando se usanLOCK_MODE_LOCKED_CLOSED
oLOCK_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
ynavigation-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 objetoTestNavHostController
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 elementoSavedStateHandle
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
paraOpenable
: se reemplazaron todos los usos deDrawerLayout
enNavigationUI
con la interfazOpenable
más genérica, que se agregó en CustomView1.1.0
y queDrawerLayout
implementó en DrawerLayout1.1.0
. - Compatibilidad con acciones y tipos de MIME en vínculos directos: los vínculos directos se expandieron para admitir
app:action
yapp:mimeType
, además del elementoapp:uri
disponible anteriormente.NavController
ahora admite la navegación mediante cualquier combinación de estos campos a través de la nueva clase deNavDeepLinkRequest
. 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ó una
NullPointerException
cuando se reemplazó una instancia de un destino sin argumentos por otra con argumentos consingleTop
. (b/158006669) - Todas las excepciones
destination is unknown
que arrojadNavController
ahora tienen información de depuración adicional para ayudar a determinar el estado deNavController
. (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 elementoNavBackStackEntry
no se actualizaba correctamente después del cierre del proceso. (b/155218371) - Las instancias
OnDestinationChangedListener
registradas antes de llamar al objetosetGraph()
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 elementoNavBackStackEntry
, y los argumentos actualizados se envían a todas las instanciasOnDestinationChangeListener
. (b/156545508)
Actualizaciones de dependencias
- El artefacto
NavigationUI
ahora depende de los objetos CustomView1.1.0-rc01
y DrawerLayout1.1.0-rc01
. (aosp/1309696)
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
yapp:mimeType
, además del elementoapp:uri
disponible anteriormente. NavController ahora admite la navegación mediante cualquier combinación de estos campos a través de la nueva clase deNavDeepLinkRequest
. (b/136573074, b/135334841)
Cambios en la API
- Se expandió considerablemente la compatibilidad con DSL de Kotlin para los destinos de Dynamic Navigation. (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 especificarapp:graphPackage
y se utilizará una configuración predeterminada en la que se agrega el sufijomoduleName
aapplicationId
después de un punto. Si necesitas personalizar tugraphPackage
, 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 en formato 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 múltiples instancias deNavHostFragment
en tu Actividad. (b/147378752)
Actualizaciones de dependencias
- Ahora Navigation depende de Fragment
1.2.4
. (aosp/1277325) - Dynamic Navigation ahora depende de Play Core
1.7.2
. (aosp/1282257)
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 unContext
en su constructor en lugar de unaActivity
. (aosp/1250252)
Correcciones de errores
NavigationUI
ya no ignora las etiquetas vacías (es decir, un destino conandroid: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 interfazOpenable
que se introdujo en CustomView1.1.0-alpha02
(queDrawerLayout
implementa a partir de DrawerLayout1.1.0-alpha04
), lo que te permite usar implementaciones personalizadas deOpenable
conNavigationUI
. (b/129030452)
Correcciones de errores
- Las reglas de ProGuard de
navigation-common-ktx
ahora solo mantienen correctamente las clases deNavArgs
que se utilizan en lugar de todas las instancias deNavArgs
. (b/150213558)
Cambios de dependencia
- Navigation revirtió su dependencia de Core
1.2.0
y ahora depende de Core1.1.0
para evitar que los desarrolladores tengan que trasladarse a una dependencia más nueva cuando Navigation no depende de API nuevas en Core1.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 unSavedStateHandle
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()
ygetPreviousBackStackEntry()
a fin de facilitar la recuperación de unaNavBackStackEntry
para los destinos actuales y anteriores. (b/79672220)
Correcciones de errores
navigateUp()
ahora pasaKEY_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
- Navigation ahora depende de Core
1.2.0
.
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 claseTestNavHostController
. Esta clase ofrece una alternativa al uso de unNavController
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 denavigation-ui
paraDrawerArrowDrawable
a fin de garantizar que no se requieraandroid.enableJetifier=true
. (b/147610424) - A partir de Navigation
2.2.1
: el módulonavigation-common-ktx
ahora tiene un nombre de paquete de manifiesto único en lugar de compartir el mismo nombre de paquete de manifiesto quenavigation-runtime-ktx
. (aosp/1141947)
Actualizaciones de dependencias
- A partir de Navigation
2.2.1
: Navigation2.2.1
ahora depende de Lifecycle ViewModel SavedState2.2.0
y Fragment1.2.1
.
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ó una
IllegalStateException
con vínculo directo al destino de inicio de tu gráfico cuando tienes varias instancias deNavHostFragment
en tu Activity. (b/147378752) NavigationUI
ya no ignora las etiquetas vacías (es decir, un destino conandroid: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 deNavArgs
que se utilizan en lugar de todas las instancias deNavArgs
. Se lanzó anteriormente en Navigation 2.3.0-alpha03. (b/150213558
Actualizaciones de dependencias
- Ahora Navigation depende de Fragment
1.2.4
. (aosp/1277325)
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
paraDrawerArrowDrawable
a fin de garantizar que no se requieraandroid.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 quenavigation-runtime-ktx
. (aosp/1141947)
Actualizaciones de dependencias
- Navigation
2.2.1
ahora depende de Lifecycle ViewModel SavedState2.2.0
y Fragment1.2.1
.
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 objetoNavBackStackEntry
que se muestra proporciona un elementoLifecycleOwner
controlado por Navigation,ViewModelStoreOwner
(el mismo que se muestra paraNavController.getViewModelStoreOwner()
) ySavedStateRegistryOwner
, 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 usanby navGraphViewModels()
o el constructorViewModelProvider
con unViewModelStoreOwner
que muestranNavController.getBackStackEntry()
oNavController.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 usaFragmentContainerView
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 Fragment1.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 búsqueda 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 denull
. (b/141613546) - Ahora,
NavHostFragment
restablece correctamente el gráfico después de un cambio de configuración cuando se usa conFragmentContainerView
. (b/143752103)
Cambios de dependencia
- Navigation ahora depende de Lifecycle
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Activity1.1.0-rc03
, and Fragment1.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 anulantoString()
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()
enActivity
ahora muestra un 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 asetGraph
ahora genera un objetoIllegalStateException
. Esto siempre debe establecerlo el objetoNavHost
como parte de la configuración inicial para garantizar que todas las instancias deNavBackStackEntry
tengan un almacenamiento coherente para las instancias deViewModel
. (aosp/1111821)
Correcciones de errores
- Se corrigió un error de tipo
ConcurrentModificationException
cuando se usaban instancias deViewModel
asociadas a varias instancias deViewModelStore
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 objetoNavBackStackEntry
que se muestra proporciona un elementoLifecycleOwner
controlado por Navigation,ViewModelStoreOwner
(el mismo que se muestra paraNavController.getViewModelStoreOwner()
) ySavedStateRegistryOwner
, 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
aViewPager2
generaba un error relacionado con unaIllegalArgumentException
. (b/133640271) NavInflater
ahora evita llamar agetResourceName()
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 usaby navGraphViewModels()
o el constructorViewModelProvider
con un objetoViewModelStoreOwner
mostrado porNavController.getViewModelStoreOwner()
. (b/135716331)
Cambios en la API
- Desde Navigation
2.1.0-rc01
: se quitó la APIgetViewModelStore()
obsoleta enNavController
que se introdujo en2.1.0-alpha02
. (aosp/1091021)
Correcciones de errores
NavHostFragment
ahora usaFragmentContainerView
, 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 delegado de propiedad
by navGraphViewModels()
para usuarios de Kotlin mediante bibliotecas de-ktx
o la API degetViewModelStoreOwner()
agregada aNavController
. Para obtener más información, consulta Cómo compartir datos relacionados con la IU entre destinos. - Destinos de diálogo: ahora puedes crear destinos de
<dialog>
que mostrarán un objetoDialogFragment
cuando ejecutesnavigate
hacia 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 ejecutar
navigate
mediante un objetoUri
, que usa el elemento<deepLink>
agregado 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 objetoNavHost
personalizado, lo que permite que las implementaciones conecten sus elementosNavController
a losLifecycleOwner
,OnBackPressedDispatcher
yViewModelStore
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 quitó la API
getViewModelStore()
obsoleta enNavController
que se introdujo en2.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 vínculo.
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 vínculo.
Nuevas funciones
NavigationUI
ahora anima la eliminación del botón Arriba cuando se usasetupWithNavController()
conToolbar
oCollapsingToolbarLayout
. (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 vínculo.
Nuevas funciones
- Se movió el atributo
app:navGraph
que usa NavHostFragment al artefactonavigation-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()
enNavController
para priorizar el nuevo métodogetViewModelStoreOwner()
que muestra un objetoViewModelStoreOwner
. (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 destinosFloatingWindow
. (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 procesar 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
y se las trasladó a una nueva subclase deNavController
:NavHostController
. (aosp/966091) - Se reemplazó el método
NavController
setHostOnBackPressedDispatcherOwner()
por el métodosetOnBackPressedDispatcher()
deNavHostController
y ahora requiere que llames asetLifecycleOwner()
antes de llamar al método. (aosp/965409) NavHostController
ahora contiene un métodoenableOnBackPressed(boolean)
que reemplaza la claseNavHostOnBackPressedManager
que anteriormente mostrabasetHostOnBackPressedDispatcherOwner()
. (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 controlados 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 vínculo.
Correcciones de errores
NavHostFragment
respeta correctamente el elementoapp:defaultNavHost
cuando se interceptan los eventos del botón Atrás del sistema, lo que corrige una regresión en Navigation2.1.0-alpha03
. b/132077777DialogFragmentNavigator
ahora administra correctamente las operacionespopBackStack()
ynavigateUp()
. 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 objetoDialogFragment
cuando uses un elementonavigate
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 deNavDirections
, ahora puedes navegar mediante un elementoUri
, que utiliza el<deepLink>
que agregaste a un destino para navegar al destino correcto. b/110412864
Cambios en el comportamiento
- Las animaciones predeterminadas proporcionadas por 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()
deNavHostFragment
y se movió su funcionalidad al nuevo métodoonCreateNavController()
a fin de dejar más claro que este es el punto de entrada correcto para agregar navegadores personalizados cuando se subclasificaNavHostFragment
. b/122802849 - Se agregó un método
hasDeepLink()
aNavDestination
para permitirte verificar si un elementoUri
determinado se puede administrar por ese destino o, en el caso de unNavGraph
, 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 conOnBackPressedDispatcher
, 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 elementoapp:argType
sin especificar ahora se infiere correctamente como un argumento destring
. 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 degetViewModelStore()
agregada aNavController
. b/111614463
Cambios en la API
- Ahora puedes agregar un elemento
app:targetPackage
a un destino<activity>
para limitar el nombre del paquete coincidente. Admiteapp: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
yandroidx.fragment:fragment:1.1.0-alpha05
. Esta versión también quita la dependencia deandroidx.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 usaFragmentFactory
para crear instancias de fragmentos. b/119054429
Correcciones de errores
- Navigation ya no envía un elemento
Bundle
nulo cuando hay argumentos adjuntos a un destino, lo que corrige el error cuando se usaandroid: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 sinFLAG_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
yfun
en el nombre del paquete asociado con la claseR
. 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
comoandroid:defaultValue
para los argumentosreference
. 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()
ynavigateUp
ahora muestran correctamentefalse
cuando muestran el último destino de la pila de actividades, lo que corrige una regresión que se introdujo en1.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 deNavigator
o en argumentos enviados a unNavDestination
. 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 una referencia
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 unapp: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 deNavController
, lo que provocaba unaIllegalStateException
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 claseNavArgs
generada por Safe Args en un objetoActivity
oFragment
. 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 complementoandroidx.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 unNavController
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 deNavHostFragment
anidados o múltiples. b/121340440
Cambios rotundos
- El método
NavOptions.applyPopAnimationsToPendingTransition()
que permite aplicar animaciones emergentes a una actividad se movió aActivityNavigator
. 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 losgetArguments()
deNavDirections
ahora se marca como@NonNull
en lugar de@Nullable
. b/123243957
Correcciones de errores
NavDeepLinkBuilder
ahora procesa correctamente variosPendingIntent
simultáneos en el mismo destino mediante el uso de los argumentos que pasas para determinar la unicidad. b/120042732NavController
ahora procesa correctamente las operaciones depopBackStack()
cuando se usa unNavHostFragment
anidado u otros fragmentos secundarios con una pila de actividades. b/122770335NavigationUI
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 dehashCode()
iguales cuandoequals()
muestra el valor "verdadero". b/123043662 FragmentNavigator
ahora arroja un mensaje de error más claro si intentas implementarFragmentTransactions
personalizadas en elFragmentManager
deNavHostFragment
. Siempre debes usargetChildFragmentManager()
. 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
conmenuCategory="secondary"
ya no mostrarán la pila de actividades cuando se usen con los métodosNavigationUI
. b/120104424 AppBarConfiguration
ahora te permite establecer una instancia de resguardo deOnNavigateUpListener
a la que se puede llamar cuandonavController.navigateUp()
muestrafalse
. (b/79993862, b/120690961)
Cambios rotundos
- Cuando usas un objeto
<argument>
con unaargType="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étodossetup
. AgregamenuCategory="secondary"
a tuMenuItem
para evitar que se muestre la pila de actividades. aosp/852869 - Los métodos
fromBundle()
de las clases deArgs
generadas ahora toman un valor deBundle
no nulo en lugar de un valor deBundle
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 objetoandroid:label
con el argumento correcto. b/80267266 - Ahora, Navigation depende de la biblioteca de compatibilidad 28.0.0 b/120293333
Cambios rotundos
- Se cambió el nombre de
OnNavigatedListener
porOnDestinationChangedListener
. b/118670572 - Ahora
OnDestinationChangedListener
también pasa elBundle
de los argumentos. aosp/837142 - Se quitaron los atributos
app:clearTask
yapp:launchDocument
, así como sus métodos asociados. Usaapp: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ónBuilder
y agrega la posibilidad de configurar cualquier marca deIntent.FLAG_ACTIVITY_
. aosp/828140 - Se cambió el nombre de
NavController.onHandleDeepLink
porhandleDeepLink
. aosp/836063 - Muchas clases y métodos no destinados para subclases, como
NavOptions
,NavInflater
,NavDeepLinkBuilder
yAppBarConfiguration
, quedaron comofinal
. 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 aFragmentFactory
. b/119054429 - El constructor de
NavGraphNavigator
ya no usa unContext
. aosp/835340 - Ahora, NavigatorProvider es una clase en lugar de una interfaz. No cambió la funcionalidad del
NavigatorProvider
que muestragetNavigatorProvider()
. aosp/830660 - Se quitó
NavDestination.navigate()
. En su lugar, llama anavigate()
en elNavigator
. aosp/830663 - Se realizó una refactorización importante de
Navigator
: se eliminó la necesidad de contar conOnNavigatorNavigatedListener
y, en su lugar,navigate
muestra elNavDestination
al que se navegó. - Las instancias de
Navigator
ya no pueden enviar eventos emergentes alNavController
. Considera usar unaOnBackPressedCallback
para interceptar las instancias en las que se presione el botón Atrás y llamar anavController.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>
propagará los argumentos de argumentos que no son de string mediante una llamada atoString()
. 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
- Una nueva clase de AppBarConfiguration te permite personalizar los destinos considerados de primer nivel. Consulta la documentación actualizada para obtener más información. b/117333663
- Ahora puedes transferir argumentos al destino de inicio de tu gráfico. b/110300470
- Los vínculos directos ahora admiten esquemas personalizados con puntos, guiones y signos más. b/112806402
Cambios rotundos
- Se integró el módulo
navigation-testing-ktx
anavigation-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
- Ahora se admiten las transiciones de elementos compartidos para los destinos de fragmentos y actividades b/79665225. Para obtener más información, consulta Cómo implementar navegaciones con el componente de arquitectura de Navigation.
- Ahora, si seleccionas un elemento en
NavigationView
, se cerrará cualquier hoja inferior con contenido. b/112158843
Cambios en la API
- Cambio rotundo: el método
navigate()
de Navigator ahora toma un parámetroNavigator.Extras
. - Ahora el método
getGraph()
de NavController esNonNull
. 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 el 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ó porapp: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 Back 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.,
DemoController.index
se convertirá ensetDemoControllerIndex
. b/79995048 - P. ej.,
action_show_settings
se convertirá enactionShowSettings
. b/79642240
- P. ej.,
- Cambio rotundo: ahora los argumentos se consideran no nulos de manera predeterminada. Para permitir valores nulos en argumentos parcelables y de strings, agrega
app:nullable="true"
. b/79642307 - Ahora puedes usar
app:type="long"
con defaultValues en forma de "123L". b/79563966 - Ahora se admiten los argumentos parcelables mediante el uso de un nombre de clase completamente calificado para
app:type
. El único valor predeterminado permitido es"@null"
. b/79563966 - Ahora las clases de Args implementan
equals()
yhashCode()
. b/79642246 - Ahora se puede aplicar el complemento Safe Args a proyectos de bibliotecas. b/80036553
- Ahora el complemento Safe Args se puede aplicar a proyectos futuros 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 de Gradle para Android 3.2 Beta 01 agrega reglas de mantenimiento para cada atributo
android:name
en los archivos en formato XML de Navigation. b/79874119 - Se solucionó la fuga 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
usasetReorderingAllowed(true)
. b/109826220Ahora 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/79632233Ahora 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/79656847Se corrigió un error
StackOverflowError
que se generaba cuando se usaba NavDeepLinkBuilder. b/109653065Se corrigió un error
IllegalArgumentException
que se generaba cuando se navegaba hacia atrás en un gráfico anidado. b/80453447Se corrigió un error relacionado con la superposición de Fragment que se generaba cuando se usaba
launchSingleTop
. b/79407969Ahora 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 enNavOptions
. b/80338878Se dio de baja el atributo
launchDocument
para acciones y la API asociada enNavOptions
. 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
.