Навигация по Android, я могу переместить любой фрагмент, который не связан

Я пытаюсь использовать компонент архитектуры навигации в своем игрушечном приложении.

Сначала я нарисовал взаимосвязь фрагментов в моем файле nav_graph.xml.

Например, я нарисовал 3 фрагмента A, B и C, как показано ниже:

A -> B -> C

Итак, у меня есть 2 действия:

  • action_a_to_b
  • action_b_to_c

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

Во фрагменте

findNavController().navigate(ADirections.actionAToB())

Во фрагменте В,

findNavController().navigate(ADirections.actionBToC())

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

findNavController().navigate(R.id.a)

В моем случае у меня нет действия для фрагмента от А до С. Но если я использую приведенный ниже код в своем фрагменте A, я могу ориентироваться!

findNavController().navigate(R.id.c)

Это ошибка? или намерены?

1 ответ

Решение

Это преднамеренно согласно документации дляnavigate():

Это поддерживает как навигацию через действие, так и прямую навигацию к месту назначения.

Если вы используете Safe Args, то поддерживаются только действия. Это гарантирует, что вы используете только те соединения, которые вы указали на графике.

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