Компонент архитектуры навигации - действия

Я следил за документами от Navigation Architecture Component, чтобы понять, как работает эта новая навигационная система.

Для перехода назад/обратно с одного экрана на другой необходим компонент, который реализует интерфейс NavHost.

NavHost - это пустое представление, при котором адресаты меняются местами, когда пользователь перемещается по вашему приложению.

Но, похоже, в настоящее время только фрагменты реализуют NavHost

Компоненты NavHost по умолчанию для компонентов архитектуры навигации - это NavHostFragment.

Итак, мои вопросы:

  • Даже если у меня очень простой экран, который можно реализовать с помощью Activity, для работы с этой новой навигационной системой необходимо разместить Fragment содержащий фактическое представление?

  • Будет ли Activity внедрять интерфейс NavHost в ближайшем будущем?

--UPDATED--

Основываясь на ответе ianhanniballake, я понимаю, что каждое действие содержит свой собственный график навигации. Но если я хочу перейти от одного действия к другому, используя компонент nav (заменив "старый" вызов startActivity), я могу использовать activity destinations. Что такое activity destinations мне неясно, потому что документы по миграции не содержат никаких подробностей:

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

  • Есть ли польза от использования ActivityNavigator вместо startActivity?
  • Как правильно переходить от действий при использовании компонента nav?

Ответы

Ответ 1

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

ActivityNavigator(this)
                    .createDestination()
                    .setIntent(Intent(this, SecondActivity::class.java))
                    .navigate(null, null)

Ответ 2

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

Вы можете добавить назначение назначения в свой навигационный график через визуальный редактор (нажав кнопку +, а затем выбрав действие в своем проекте) или вручную добавив XML:

<activity
    android:id="@+id/secondActivity"
    android:name="com.example.SecondActivity" />

Затем вы можете перейти к этой активности (т.е. Начать работу), используя ее точно так же, как и любое другое место назначения:

Navigation.findNavController(view).navigate(R.id.secondActivity);

Ответ 3

ActivityNavigator(this)
        .createDestination()
        .setIntent(Intent(this, MainActivity::class.java)).navigatorName