Согласно Внедрение навигационной документации :
Примечание. Компоненты навигации предназначены для приложений, которые выполняют одно основное действие с несколькими назначениями фрагментов.Основной вид деятельности содержит граф навигации и отвечает за обмен местами назначения по мере необходимости.В приложении с несколькими адресатами действий каждый дополнительный вид деятельности имеет свой собственный график навигации.
Следовательно, нет.Не существует глобального NavController
, который существует для всего вашего приложения - каждое действие будет иметь свой собственный NavController
и связанный с ним график навигации.
Однако не требуется переключать все приложение на Navigation all atодин раз.Согласно документации Migrate to Navigation , вы можете конвертировать одно действие за один раз, продолжая использовать отдельное действие входа в систему для этого конкретного случая, как и раньше.
Это помогает встроеннаяв поддержку <activity>
адресатов, которые являются пунктами, которые, когда вы navigate()
им, делаете вызов startActivity()
, а не FragmentTransaction
.Это было бы полезно, если у вас в пользовательском интерфейсе есть кнопка «Вход», которую вы хотите привязать к началу действия по входу в систему.
Однако есть несколько очень веских причин для перехода к модели единого действия, так какобъясняется в Отдельном задании: почему, когда и как говорите , но в конце разговора подчеркивает, что:
Если вы обнаружите, что вы искажаетесвой собственный опыт, и он не имеет смысла для вас, не делайте этого.Если что-то работает, это хорошо.Продолжай работать.Но если вы обнаружите, что сталкиваетесь с проблемами, у вас непоследовательное поведение или вы хотите сделать что-то вроде общих моделей ViewModels, возможно, пришло время подумать о переходе к единой структуре Activity.