Course Content
-
Навигация в Android через Navigation Architecture Component
- Введение в Navigation Architecture Component
- Описание проекта
- Описание Navigation Architecture Component
- Знакомство с Navigation Graph
- Создание перехода
- Реализация навигации в приложении
- Изменение анимации перехода
- Передача аргументов между экранами
- Type-safe аргументы( В разработке)
- Навигация через actions (В разработке)
- Реализация deeplinks (В разработке)
Знакомство с Navigation Graph
Назначение или Destinations
При использовании Navigation Component используется концепция destination ну или назначение. По сути это ваш фрагмент или активити на которые пользователь должен перейти.
Граф переходов или Navigation Graph
Navigation graph или граф переходов является новым типом ресурсов и представляет собой все сценарии переходов между экранами Android Studio позволяет визуализировать все сценарии переходов в виде графа в Navigation Editor. Пример навигационного графа для демонстрационного приложения:

Чтобы открыть граф переходов:
- Откройте
res/navigation/mobile_navigation.xml - Нажмите Design чтобы перейти в Design mode:

После этого вы увидите:

Здесь вы схематично видите сценарии переходов между экранами. Стрелочки между экранами (или назначениями/destinations) называются действиями (action). Чуть позже мы поговорим о них.
Чтобы увидеть свойства того или иного назначения (destination) нажмите на него:

Чтобы увидеть свойства того или иного действия (action) аналогично нажмите на него:

Редактирование графа переходов в XML
Аналогично, как мы можем редактировать вёрстку в XML-файле, граф переходов можно точно также редактировать. Для этого выберете вкладку Code:

Вы увидите подобный XML-файл:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@+id/home_dest">
<!-- ...tags for fragments and activities here -->
</navigation>
Давайте разберём основные тэги:
<navigation>корневой тэг для графа переходовТэг <navigation>может содержать один или несколько экранов для перехода, помеченных тэгами<activity>или<fragment>app:startDestinationэтот атрибут помечает начальный экран на который переходит пользователь при первом запуске приложения
<fragment
android:id="@+id/flow_step_one_dest"
android:name="com.example.android.codelabs.navigation.FlowStepFragment"
tools:layout="@layout/flow_step_one_fragment">
<argument
.../>
<action
android:id="@+id/next_action"
app:destination="@+id/flow_step_two_dest">
</action>
</fragment>
Теперь давайте рассмотрим основные тэги внутри destination, а именно перехода ведущего на фрагмент:
android:idпозволяет определить ID идентификатор для фрагмента который можно использовать позже для перехода на этот фрагмент.android:nameимя фрагмента или активити для инициализации экрана при переходеtools:layoutуказывает, какой макет должен отображаться в графическом редакторе.
Чуть позже мы рассмотрим еще несколько тэгов таких как: <action>, <argument>, и <deepLink>