Navegación

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

El componente Navigation de Android Jetpack incluye la biblioteca de Navigation, el complemento Safe Args de Gradle y las 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 ofrece algunos otros beneficios y funciones, entre los que se incluyen los siguientes:

  • Animaciones y transiciones: Proporciona recursos estandarizados para animaciones y transiciones
  • Vínculos directos: Implementa y controla 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 Safe Args de Gradle que proporciona seguridad de tipos cuando se navega y se pasan datos entre destinos
  • Compatibilidad con ViewModel: Permite definir 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
  • Acciones hacia atrás y arriba: Controla correctamente las acciones hacia atrás y arriba de forma predeterminada

Cómo configurar tu entorno

Para incluir compatibilidad con Navigation 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")
}

Si quieres 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

Para obtener más información sobre cómo 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