Generalidades

Navegación multimódulo en Android | por Abhriya Roy | junio de 2021

Abria Roy
1*jU4eBZefAg4Hutafu5a51A

MetroMigre su aplicación a una arquitectura de módulos múltiples con funciones y se pregunte si las dependencias de navegación causarán dependencias circulares.
¡Veamos cómo podemos aliviar todos los problemas y crear una implementación limpia!

Supongamos que ya tenemos los conocimientos básicos de los siguientes aspectos: –

  • Componentes de navegación de Android
  • Utilice Hilt para la inyección de dependencia

Bueno, ¡comencemos!

La estructura de nuestro proyecto se ve así:

Nuestra aplicación contendrá varios módulos, a saber

  • solicitud
  • nuclear
  • Característica a (característica pronunciada A)
  • Característica b (característica pronunciada B)

Módulo de aplicación Es el lugar para todo lo relacionado con las funciones básicas de la aplicación, como MainActivitycon HomeFragmentEn Vivo.

Módulo principal Es un módulo universal, que contiene todo el contenido que se puede compartir entre varios módulos, como varios utilityclase.

plancharUna especiemódulo tureA Es el lugar donde se ubica todo lo relacionado con nuestra característica A.

Módulo FeatureB Es el lugar donde se ubica todo lo relacionado con nuestra característica B.

Ahora conocemos un poco los módulos y su contenido en la aplicación.

Al llegar a nuestra pila de navegación, se ve así:

Aplicación → Función A → Función B

con

Aplicación → Función B → Función A

Entonces, aquí vemos que podemos pasar de FeatureA a FeatureB y viceversa sin encontrar ningún error de dependencia circular. Se parece a esto:

  • Primero iniciamos sesión en HomeFragment, podemos elegir ir a FeatureA o FeatureB.
  • Si hacemos clic en FeatureA, podemos optar por ir a FeatureB.
  • Si hacemos clic en FeatureB, podemos optar por ir a FeatureA.
  • Haga clic en el botón Atrás y nos llevará de regreso al segmento anterior.

Para lograr esto, definiremos interfaces con métodos para navegar a funciones específicas, y la implementación de estas interfaces estará en cada módulo de función y se proporcionará para la inyección de dependencias usando Hilt.

Así que implementémoslo:

paso 1:

En el módulo principal, definimos una interfaz para cada módulo funcional, a saber

  • FeatureScreenARouteContract
  • FeatureScreenBRouteContract

FeatureScreenARouteContract se parece a

Aquí, hemos creado un archivo llamado show Acepta los datos que se van a pasar como uno de los parámetros y un NavController Capaz de inflar la nueva pantalla.

Del mismo modo, FeatureScreenBRouteContract se ve así

Paso 2:

En el módulo de la función A, proporcionaremos la implementación FeatureScreenARouteContract Tomando dataToPass Y entregarlo inflando la pantalla correspondiente.

Lo que querrías saber nav_graph_a como

Por último, debemos proporcionar nuestro FeatureARouteContractImpl Use el mango para que podamos usarlo en cualquier lugar de nuestra aplicación. Así es como se hace:

Feaute A ahora se puede usar en cualquier lugar llamando a nuestra aplicación FeatureScreenARouteContract En cualquier lugar de nuestra aplicación.

También para el módulo featureB, la implementación es la siguiente:

¡Ahora featureB también se puede inyectar en cualquier lugar!

último paso:

Desde llamar a cualquiera de nuestros módulos homeFragment En el módulo de la aplicación, simplemente podemos inyectar nuestro contrato de enrutamiento y llamar show Su método

Para abrir featureB desde featureA, podemos hacer

Para abrir featureA desde featureB, podemos hacer

LEER  Samsung Galaxy Tab S7+ - Tablet Android WiFi de 12.4" I 128 GB I S Pen Incluido I Color Azul [Versión española]

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