Условные фрагменты и повторное использование навигации - PullRequest
0 голосов
/ 26 июня 2018

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

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

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

1 Ответ

0 голосов
/ 10 сентября 2018

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

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

  1. Выберите Новый пункт назначения в инструменте дизайна NavGraph, чтобы добавить фрагмент. enter image description here

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

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

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

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