Переходите от одного функционального модуля Dynami c к другому с помощью компонента архитектуры навигации Jetpack. - PullRequest
0 голосов
/ 06 мая 2020

Как перейти от базового модуля или модуля Dynami c к модулю Dynami c с помощью компонента навигации?

Как определить модуль назначения внутри графа навигации?

1 Ответ

0 голосов
/ 06 мая 2020

Android В Studio 4.0 представлен функциональный модуль Dynami c с поддержкой графа навигации.

Чтобы использовать функциональный модуль Dynami c внутри графа навигации, необходимо использовать Android Studio 4.0 или выше.

Шаг 1:

В вашем основном app / build.gradle определите зависимость модуля функции

    android {
    ...
    dynamicFeatures = [":camera", ":video", ":payment"]
   }

Шаг 2:

В функции module build.gradle, определите зависимости его модулей. Обратите внимание, что один функциональный модуль Dynami c может зависеть от другого функционального модуля Dynami c.

В вашем payment / build.gradle

dependencies {
implementation project(':app')
}

В вашей камере / build.gradle

dependencies {
implementation project(':app')
}

В вашем видео / build.gradle

dependencies {
implementation project(':app')
implementation project(':camera')
}

Шаг 3:

Вам необходимо включить флаг feature.on.feature для Android студии.

  1. Go в меню «Справка»> «Редактировать пользовательские параметры виртуальной машины».
  2. добавьте rundebug.feature.on.feature в файл, сохраните изменения и перезапустите Android Studio.

    enter image description here

  3. Run> Edit configurations и в Run / Debug Configuration вы можете определить различные конфигурации установки для тестирования.

enter image description here

Шаг 4:

Вам необходимо использовать DynamicNavHostFragment вместо NavHostFragment

<fragment
  android:id="@+id/nav_host_fragment"
  android:name="androidx.navigation.dynamicfeatures.
  fragment.DynamicNavHostFragment"
  app:navGraph="@navigation/nav_graph"
  … />

Шаг 5:

Определите свой навигационный график. Здесь вы можете использовать атрибут app:moduleName для определения зависимости модуля.

    <navigation>
  <fragment
    app:moduleName="featureA"
    android:name="full.path.to.MyFragment"/>
  <activity
    app:moduleName="featureB"
    android:name="full.path.to.MyActivity"/>
</navigation>

Библиотека навигации сделает все остальное за вас.

Удачного кодирования :)

...