Navegación

La navegación se refiere a las interacciones que permiten a los usuarios navegar a través, dentro y fuera de las diferentes piezas de contenido de tu app.

El componente Navigation de Android Jetpack incluye la biblioteca de Navigation, el complemento de Gradle Safe Args y herramientas para ayudarte a implementar la navegación en apps. El componente Navigation controla diversos casos de uso de navegación, desde clics simples en botones hasta patrones más complejos, como las barras de la aplicación y el panel lateral de navegación.

Conceptos clave

En la siguiente tabla, se proporciona una descripción general de los tres conceptos clave de la navegación y los tipos principales que usas para implementarlos.

Concepto

Propósito

Tipo

Host

Un elemento de la IU que contiene el destino de navegación actual. Es decir, cuando un usuario navega por una app, esta esencialmente intercambia destinos dentro y fuera del host de navegación.

Gráfico

Es una estructura de datos que define todos los destinos de navegación dentro de la app y cómo se conectan entre sí.

NavGraph

Controlador

Es el coordinador central para administrar la navegación entre destinos. El controlador ofrece métodos para navegar entre destinos, controlar vínculos directos, administrar la pila de actividades y mucho más.

NavController

Beneficios y funciones

El componente Navigation proporciona otros beneficios y funciones, incluidos los siguientes:

  • Animaciones y transiciones: Proporciona recursos estandarizados para animaciones y transiciones.
  • Vínculos directos: Implementa y administra vínculos directos que llevan al usuario directamente a un destino.
  • Patrones de la IU: Admite patrones como los paneles laterales de navegación y la navegación inferior con un mínimo trabajo adicional.
  • Seguridad de tipos: Incluye el complemento de Gradle para Safe Args que proporciona seguridad de tipos cuando se navega y se pasan datos entre destinos.
  • Compatibilidad con ViewModel: Permite determinar el alcance de un elemento ViewModel en relación con un gráfico de navegación para compartir datos relacionados con la IU entre los destinos del gráfico.
  • Transacciones de fragmentos: Admite y controla por completo transacciones de fragmentos.
  • Copia de seguridad y acción: Controla las acciones de copia de seguridad y retroceso de forma predeterminada.

Desarrolla tu entorno

Para incluir compatibilidad de navegación en tu proyecto, agrega las siguientes dependencias al archivo build.gradle de tu app:

Groovy

dependencies {
  def nav_version = "2.7.7"

  // 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:$nav_version"
}

Kotlin

dependencies {
  val nav_version = "2.7.7"

  // 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:$nav_version")
}

Para obtener información sobre cómo agregar otros componentes de la arquitectura a tu proyecto, consulta Cómo agregar componentes a tu proyecto.

Próximos pasos

Para consultar más documentación y recursos relacionados con el componente Navigation, accede a los siguientes recursos.

Guías detalladas

Si deseas obtener más información para implementar un host de navegación y NavController, además de detalles sobre cómo interactúan con Compose y otros frameworks de IU, consulta las siguientes guías:

Codelabs

Videos

Ejemplos