Условные фрагменты и повторное использование навигации

Дано N фрагментов, представляющих разные UI одного и того же объекта. Фрагменты отображаются условно. Состояние известно только во время выполнения. Каждый фрагмент должен иметь одинаковый поток навигации.

Как обобщить / абстрагировать навигационный поток из фрагментов для дальнейшего повторного использования с помощью XML-графа компонента архитектуры навигации? В настоящее время я вижу только способ создания отдельного пункта назначения или вложенной навигации для каждого фрагмента, но это ужасная идея с точки зрения повторного использования. Другой вариант - сделать все условные переходы в коде Kotlin / Java, но в этом случае поток приложения не будет отображаться в схеме графа навигации. Есть ли лучший способ повторно использовать навигацию?

Официальная документация по этой теме весьма банальна: https://developer.android.com/topic/libraries/architecture/navigation/navigation-conditional

У меня тоже есть такой же опыт, есть ли у вас какое-нибудь решение?

Archie G. Quiñones 19.08.2018 04:17

Проблема Issuesetracker.google.com/issues/80029773 еще не устранена. Вы можете пометить его, если хотите его посмотреть.

yaroslav 21.08.2018 10:10

Я не понимаю, как эта система отслеживания проблем связана с вопросом

Archie G. Quiñones 21.08.2018 17:47

Простите, я пропустил вопрос. Что касается этого вопроса, я не нашел изящного способа, и из-за множества других проблем (например, по ссылке выше) я отказался от библиотеки навигации и переключился на github.com/ncapdevi/FragNav. Библиотека навигации IMO еще не готова. Кажется, что единственный способ создать динамический график - программный. Если вы хотите, вы можете создать запрос функции.

yaroslav 21.08.2018 18:23
5
4
2 420
1

Ответы 1

Фрагменты можно повторно использовать с Компонент архитектуры навигации, чтобы код оставался эффективным.

Например, у меня есть вложенный дочерний фрагмент с именем ContentFragment в моем ГлавнаяФрагмент, который содержит контент. Я повторно использую ContentFragment для отображения другого типа контента, запущенного на отдельном экране.

  1. Выберите Новое направление в средстве дизайна NavGraph, чтобы добавить фрагмент.

  2. Передайте аргумент как во вложенный фрагмент, так и во фрагмент, запущенный с помощью NavGraph, чтобы фрагмент мог прочитать аргумент и предоставить соответствующую логику для каждого случая.

a) Для вложенного фрагмента я передаю аргумент через пакет, как обычно в эпоху до компонентов навигации с фрагментами.

б) Для нового экрана я выбираю Фрагмент, добавленный в NavGraph, и нажимаю кнопку + в разделе аргументов. Затем вы можете следовать документация для добавления аргументов с помощью компонента навигации.

Как вы справляетесь с навигационными направлениями в этом случае? Допустим, ContentFragment используется в двух навигационных графах.

YellowJ 11.03.2020 10:24

@YellowJ, Лучшая стратегия - реализовать вложенные графы навигации для общих экранов. См .: Создание навигационных графиков и Вложенные навигационные графы

Adam Hurwitz 11.03.2020 16:34

Другие вопросы по теме