Компонент навигации с мгновенными / (динамическими) функциональными модулями - PullRequest
7 голосов
/ 05 апреля 2019

Я пытаюсь реализовать новый компонент навигации с динамическими функциями

Итак, структура выглядит так:

  • приложение (имеет динамический dynamicFeatures = [], включенный в Gradle)
  • 1012 * особенности *

    • Войти
    • дом
    • и т.д.
  • библиотека -> globalNav

Я много безуспешно читал, как склеивать их друг с другом без зависимости друг от друга, поскольку каждая функция полностью изолирована

например Приложение (app module) запускается с SplashActivity и проверяет состояние сеанса, поэтому у меня вопрос, как мне запустить login_graph или home_graph и в первом случае запустить дом после окончания аутентификации потока?

В настоящее время я пытаюсь склеить их вместе с помощью модуля globalNav (android-library). Я нашел пару обходных путей:

  • Завершить путь к классу, что означает, что я начинаю намерение с className (плохо, поскольку это не очень масштабируемо и делает поддержание PITA)
Intent().setClassName(context.packageName, className).also { context.startActivity(it) }
  • Глубокие ссылки (те, которые я хотел использовать в качестве своего навигационного графика, уже имеют их), но по какой-то причине они всегда показывают средство выбора «Выберите полное действие», даже если его принимает только мое приложение.

    • Я уже пытался использовать actions, но такое же поведение, как и у глубоких ссылок

Любые предложения будут великолепны:)


PS: Некоторые ссылки, которые я просматривал / читал:

PSS: Я активно пытаюсь выяснить это, если найду хорошее решение, и я обязательно отвечу.

EDIT

Для тех, кто заинтересован в этом, так как в настоящее время это не поддерживается, вы можете отметить проблему здесь: https://issuetracker.google.com/issues/132170186

1 Ответ

0 голосов
/ 12 мая 2019

Пару минут назад я столкнулся с той же проблемой и увидел ваш вопрос, пытаясь найти ответ.

В моем случае у меня есть 2 модуля app и login . Модуль login является модулем динамических функций, который зависит от модуля app . Модуль login содержит всю логику и навигацию для целей регистрации (содержит логин, регистр и т. Д.). Я хотел включить эту функцию LoginActivity (которая является активностью в модуле входа в систему, в которой есть вся навигация) в основной граф навигации в модуле приложения. Мы не можем вызвать LoginActivity из уровня приложения, о котором он не знает. Но

<activity android:id="@+id/loginActivity"
    android:name="login.LoginActivity"
    android:label="LoginActivity"/>

добавление его вручную в основной граф навигации сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...