Как стать автором
Обновить

Комментарии 7

Спасибо за разбор!
Появился вопрос. Cicerone предлагает более абстрактное решение и не привязывается к FragmentManager'у. А есть ли возможность в решении от Google переопределить механизм транзакций для каждого события? Например, если мы используем не фрагменты, а контроллеры из кондуктора?

Как показывает практика: апи библиотек гугла обычно негибкие и мало поддаются кастомизации.
Прямого пути для решения подобной задачи я не вижу, но мы же сами вызываем из кода переход с конретным ID, поэтому теоретически можно вместо вызова перехода на NavController'е, вызывать его на собственной навигации, предварительно узнав параметры перехода, заданные в xml графе.
Но все это ради UI графа с не очень богатым фукционалом?
Может быть тогда проще написать свой плагин для Андроид Студии, который будет отображать xml с настройкой переходов в виде UI-графа, а потом позволять использовать эти параметры как угодно? А это идея!

Точно, спасибо за наводку! Не заметил, что можно в провайдер добавлять свои реализации.
Там какраз в навигатор приходит экшн со всеми параметрами.
Так что может и получится прикрутить кондуктор навигацию.
Я правда ее не использую)

Хочу отметить, что навигация в данном случае рассматривается в пределах одного Activity, такой подход я практикую уже не на первом проекте, и он себя отлично показал (обсуждение этого подхода — не цель данной статьи).

Подскажите, а есть где описан такой подход? Очень интересует

Ничего сверх нового в подходе нет, но есть особенности принятые конкретно у нас.
Я планирую когда-нибудь описать, как мы у себя готовим такие приложения.

  • У меня происходит сложность с работой кнопки Back, и я даже не понимаю, по какой причине.
    single Activity, домашний фрагмент в нем — Фрагмент А. В MainActivity я определяю контроллер:


    navController = Navigation.findNavController(this, R.id.mainContainer)

    По нажатию на кнопку в этом фрагменте происходит следующее:


    Navigation.findNavController(this.requireView()).navigate(R.id.checkingView)

    Так как в разметке контейнера стоит defaultNavHost="true", то по логике при нажатии на кнопку Back я должен снова вернутся на фрагмент А, но этого не происходит.
    Может сталкивались с таким?


  • Как думаете, стоит ли делать (и можно ли) синглтоном Контроллер, создавая его инстанс в DI?


Зарегистрируйтесь на Хабре, чтобы оставить комментарий