Generalidades

Componentes de navegación de Android en Java | Autor: Marwa Eltayeb | Diciembre de 2021

  1. Configura tu entorno

Primero, agregue las siguientes dependencias a su aplicación build.gradle Archivo para incluir soporte de navegación en su proyecto.

def nav_version = "2.3.5"

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

2. Crea un mapa de navegación

norteUnala vigiliación ocurre entre sus aplicaciones destino, Estos destinos pasan acción.

Una Mapa de navegación Es un archivo de recursos que contiene todos los objetivos y operaciones. El diagrama representa todas las rutas de navegación de su aplicación.

Mapa de navegación

En el diagrama de navegación, tenemos dos unidades muy importantes.

  1. destino: Este es un fragmento o una actividad en su aplicación. Es un componente que contiene datos y una interfaz con la que los usuarios pueden interactuar.
  2. acción: Esta es una ruta de navegación específica que los usuarios pueden seguir para llegar a un destino determinado. Su objetivo principal es conectar dos o más destinos.

Para agregar un mapa de navegación a su proyecto:

  1. En la ventana del proyecto, haga clic derecho res Catalogar y seleccionar Nuevo> Archivo de recursos de Android. Esta Nuevo archivo de recursos Aparece el cuadro de diálogo.

2. Ingrese el nombre Nombre del archivo Campo, como «nav_graph».

3. Elija navegación Desde Tipo de recurso Lista desplegable y haga clic en Hilera.

Agregue un mapa de navegación a su proyecto

3. Agregar NavHost a la actividad

Una Host de navegación Cuando el usuario interactúa con nuestra interfaz de usuario, actuará como un marcador de posición para el destino que se intercambiará. Necesitamos agregar NavHost al diseño principal de nuestra actividad.

3. Agrega un destino en el mapa de navegación.

Para agregar un nuevo destino usando el editor de navegación:

Crear nuevo destino
  • En el editor de navegación, haga clic en Nuevo destino Icono y haga clic en Crear nuevo destino.
  • dentro Nuevos componentes de Android El cuadro de diálogo que aparece, crea tu fragmento.

Atributos:

  • id: La identificación especial del destino.
  • name: Indica el nombre del destino, en nuestro caso es la clase del fragmento.
  • label: El nombre del diseño de destino que se muestra en la barra superior de la aplicación (si existe).
  • layout: El archivo de diseño real utilizado para mostrar el contenido en nuestro destino.

El punto de partida del mapa de navegación es searchFragment, pero necesitamos conectarnos al destino.

app:startDestination=”@id/searchFragment”

4. Destino de la conexión

Navegar al destino es utilizar NavController, Un objeto que gestiona la navegación de la aplicación. NavHostCada NavHost Tienen sus propias contrapartes NavController. Deberías buscar NavController Directamente desde NavHostFragment.

// Get the navigation host fragment from this Activity
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
// Instantiate the navController using the NavHostFragment
NavController navController = navHostFragment.getNavController();
// Make sure actions in the ActionBar get propagated to the NavController
setupActionBarWithNavController
(this, navController);

Para conectarnos al destino usamos accións. Las operaciones se indican mediante flechas en el diagrama de navegación. Las acciones suelen conectar un destino con otro. Usamos flechas para conectarlos o agregamos el siguiente código manualmente.

  • Primero, usaremos una acción para mover search_fragment llegar playlist_fragment
<action
android:id="@+id/action_searchFragment_to_playlistFragment"
app:destination="@id/playlistFragment"
/>

Para navegar realmente al destino, aún necesita escribir código para realizar la navegación.usar NavController.navigate(), Pase el ID de la acción, como se muestra a continuación:

navController.navigate(R.id.action_searchFragment_to_playlistFragment, bundle);
  • En segundo lugar, usaremos una acción para mover playlist_fragment llegar download_fragment
<action
android:id="@+id/action_playlistFragment_to_downloadFragment"
app:destination="@id/downloadFragment"
/>

Del mismo modo, utilice NavController.navigate(), Pase el ID de la acción, como se muestra a continuación:

navController.navigate(R.id.action_playlistFragment_to_downloadFragment, bundle);

5. Transferir datos entre destinos

existe PlaylistFragment, Queremos recibir las palabras clave que buscaremos del segmento anterior.Necesitamos de SearchFragment llegar PlaylistFragmentLa biblioteca de navegación nos ayuda a transferir datos entre destinos.

Tiene un complemento llamado safeArgs Esto ayuda a transmitir datos y garantizar la seguridad de los tipos. Esto significa que no es necesario comprobar la nulabilidad de los datos.El proyecto ha sido safeArgs.

Puedes pasar En esta sección Para aprender a configurarlo.

Para pasar los datos al destino, utilizamos Etiqueta.

<argument
android:name="keyword"
android:defaultValue="None"
app:argType="string"
/>

Atributos:

  • name: Este es el nombre del valor de datos que desea pasar a este objetivo.
  • defaultValue: Este es el valor predeterminado que se utiliza cuando no se transfieren datos.
  • argType: Este es el tipo de datos del parámetro pasado. Utilizo cadenas como palabras clave.

Crear paquete para pasar, puede poner String, Integer u objeto serializable

btn_search.setOnClickListener(v -> {
String keyword = searchEditText.getText().toString().trim();

if(!TextUtils.isEmpty(keyword)){

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putString(KEYWORD, keyword);
fragment.setArguments(bundle);

navController.navigate(R.id.action_searchFragment_to_playlistFragment, bundle);
}
});

En el siguiente fragmento, en onViewCreated, llame a Bundle

Bundle bundle = this.getArguments();
if (bundle != null) {
keyWord = bundle.getString(KEYWORD);
}

6. Manipule el botón de arriba

Para agregar soporte de navegación a la barra de acciones predeterminada, llame setupActionBarWithNavController() De tu actividad principal onCreate() método.

Entonces cubrimos onSupportNavigateUp() Manejo de la navegación

@Override
public boolean onSupportNavigateUp() {
return navController.navigateUp() || super.onSupportNavigateUp();
}

Esta increíble biblioteca está implementada en mi aplicación. Descarga de video. mira esto. 😃

Referirse a: Documento de navegación de Android

Más artículos: haga clic en aquí

Encuéntrame aquí: GitHub | LinkedIn | Gorjeo

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba