fbpx

Знакомство с Navigation Graph

Назначение или Destinations

При использовании Navigation Component используется концепция destination ну или назначение. По сути это ваш фрагмент или активити на которые пользователь должен перейти.

Граф переходов или Navigation Graph

Navigation graph  или граф переходов является новым типом ресурсов и представляет собой все сценарии переходов между экранами  Android Studio позволяет визуализировать все сценарии переходов в виде графа в Navigation Editor. Пример навигационного графа для демонстрационного приложения:

Чтобы открыть граф переходов:

  1.  Откройтеres/navigation/mobile_navigation.xml
  2. Нажмите 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>