Я играл с навигационным компонентом JetPack. По большей части это довольно прилично, хотя я столкнулся с несколькими проблемами / случаями, для которых я еще не нашел достойного решения.
Допустим, у нас есть Одиночное действие приложение с модульной архитектурой (стратегия упаковки?), и мы не хотим иметь модуль Бог для навигации. Мы хотим, чтобы все наши модули имели свои собственные nav_graph
, и мы хотим иметь возможность переходить от графика к графику.
Допустим, у нас есть такая зависимость: app
--dependsOn- -> library
--dependsOn -> details
. Оба из library
и details
имеют свои собственные nav_graphs
, которые знают, как перемещаться в каждом из этих модулей.
Теперь, если мы находимся в модуле app
, мы сможем напрямую перейти к любому из details
'пунктов назначения, поскольку app
знает о library
и details
. Но как нам перейти от details
к, например, другому пункту назначения library
?
Одно из найденных мной решений - через Router
некоторых типов (обычно Interface
внутри God
модуля), что не идеально, особенно если вы используете что-то вроде SafeArgs
, потому что, если вы хотите, например, изменить передаваемый параметр, вам необходимо изменить сигнатуры метода маршрутизатора et c.
Другое решение, которое я нашел, - динамическое добавление адресатов . На самом деле я не смог сделать эту работу для своего случая, хотя я помню, как где-то читал, что если вы знаете полное имя класса / места назначения, вы сможете перейти к нему, несмотря на Android предупреждения Studio.
Третье, что я пытался использовать popUpTo
с inclusive=true
в определениях nav_graph
, чтобы выскочить из этого графика, но мне не повезло с этим (я использовал NavDrawer
и хотел вернуться в локацию верхнего уровня).
Кто-нибудь нашел хорошее решение для этого?