Navigation.xml: действия отсутствуют, предварительный просмотр и связывание недоступны

Я только что узнал обо всей функции навигации в Android, о том, как вы можете нарисовать график и связать фрагменты или действия, чтобы визуализировать поток и безопасно передавать параметры намерений через файл navigation.xml.

У меня с самого начала есть 3 разные проблемы:

  1. Не все действия можно добавить на график через редактор (я знаю, что могу написать XML на вкладке текста, но я считаю, что есть какая-то проблема)
  2. Все превью отсутствуют (опять же, ничего страшного, но все равно интересно)
  3. Я не могу связать действия

Есть ли у вас какие-либо намеки на то, что могло быть причиной этого?

0
0
222
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
  1. Not all activities can be added to the graph through the editor (I'm aware I can write the XML in the text tab but I believe there's some kind of issue)

Вы должны сообщить об ошибке в редакторе навигации, если вы можете воспроизвести это в примере проекта с использованием последней версии Android Studio, поскольку все действия должны быть перечислены. Обратите внимание, что действия, которые вы уже добавили в свой график, отфильтровываются из списка «Добавить место назначения» (поскольку вы уже добавили его).

  1. All previews are missing (not a big deal again but still intriguing)

Редактор навигации полагается на некоторый макет в вашем проекте, имеющий tools:context, указывающий на вашу активность (например, tools:context = "com.example.MainActivity"), для автоматического заполнения макета. Эта проверка выполняется только при первом добавлении пункта назначения на график — после этого вам нужно будет добавить атрибут tools:layout = "@layout/main_activity" к пункту назначения вручную.

  1. I cannot link the activities

Согласно Руководство по началу работы с навигацией:

Note: The Navigation component is designed for apps that have one main activity with multiple fragment destinations. The main activity is associated with a navigation graph and contains a NavHostFragment that is responsible for swapping destinations as needed. In an app with multiple activity destinations, each activity has its own navigation graph.

В навигации пункт назначения <activity> служит точкой выхода, связывая график одного действия с другим действием, у которого будет свой собственный график навигации. Редактор навигации не позволяет вам создавать действия (линии между пунктами назначения) из пунктов назначения <activity>, потому что они никогда не могут быть запущены — запустив пункт назначения <activity>, вы оставили старую активность (и ее график) позади.

В соответствии с Переход к документации компонента навигации вы должны сосредоточиться на преобразовании одного действия за раз в навигацию, построив график только для этого действия (независимо от того, содержит ли он только один экран или несколько фрагментов). <activity> пункты назначения затем позволяют вам связать отдельные действия вместе, заменив вызовы на startActivity() таким образом, чтобы вы могли беспрепятственно объединять действия вместе, если вы того пожелаете.

Если каждое ваше действие содержит несколько фрагментов, то вы можете создать отдельный граф навигации для этих действий. Вы можете связать фрагмент в одном действии с другим действием в графе навигации. Таким образом, когда будет вызвано другое действие, можно использовать навигационный граф для этого действия.

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