Архитектура навигации Компонентная навигация только с контекстом - PullRequest
0 голосов
/ 13 февраля 2019

Можно ли получить NavigationController и выполнять навигацию только в контексте?Прямо сейчас это кажется нет.Это потребует такой серьезной перестройки нашего приложения, что я чувствую, что что-то упустил.

Если пользователь вышел из системы, нам нужно перейти к LoginFragment.Эта проверка на выход происходит в нескольких местах, которые не являются Деятельностью или Фрагментом.Например, Аутентификатор, который идет в OkHttpClient.

В настоящее время это работает нормально, потому что вы можете получить доступ к ApplicationContext из любого места, и это все, что вам нужно, чтобы создать Intent, запустить с его помощью и добавить новый Activity поверх backStack.

1 Ответ

0 голосов
/ 13 февраля 2019

Согласно Внедрение навигационной документации :

Примечание. Компоненты навигации предназначены для приложений, которые выполняют одно основное действие с несколькими назначениями фрагментов.Основной вид деятельности содержит граф навигации и отвечает за обмен местами назначения по мере необходимости.В приложении с несколькими адресатами действий каждый дополнительный вид деятельности имеет свой собственный график навигации.

Следовательно, нет.Не существует глобального NavController, который существует для всего вашего приложения - каждое действие будет иметь свой собственный NavController и связанный с ним график навигации.

Однако не требуется переключать все приложение на Navigation all atодин раз.Согласно документации Migrate to Navigation , вы можете конвертировать одно действие за один раз, продолжая использовать отдельное действие входа в систему для этого конкретного случая, как и раньше.

Это помогает встроеннаяв поддержку <activity> адресатов, которые являются пунктами, которые, когда вы navigate() им, делаете вызов startActivity(), а не FragmentTransaction.Это было бы полезно, если у вас в пользовательском интерфейсе есть кнопка «Вход», которую вы хотите привязать к началу действия по входу в систему.

Однако есть несколько очень веских причин для перехода к модели единого действия, так какобъясняется в Отдельном задании: почему, когда и как говорите , но в конце разговора подчеркивает, что:

Если вы обнаружите, что вы искажаетесвой собственный опыт, и он не имеет смысла для вас, не делайте этого.Если что-то работает, это хорошо.Продолжай работать.Но если вы обнаружите, что сталкиваетесь с проблемами, у вас непоследовательное поведение или вы хотите сделать что-то вроде общих моделей ViewModels, возможно, пришло время подумать о переходе к единой структуре Activity.

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