JetPack Navigation перейти к родительскому графику из дочернего модуля - PullRequest
2 голосов
/ 23 января 2020

Я играл с навигационным компонентом 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 и хотел вернуться в локацию верхнего уровня).

Кто-нибудь нашел хорошее решение для этого?

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