Навигация относится к взаимодействиям, которые позволяют пользователям перемещаться по различным частям контента вашего приложения, входить в них и выходить из них.
Компонент навигации Android Jetpack включает библиотеку навигации , подключаемый модуль Safe Args Gradle и инструменты, которые помогут реализовать навигацию в приложении. Компонент «Навигация» обрабатывает разнообразные варианты использования навигации: от простых нажатий кнопок до более сложных шаблонов, таких как панели приложений и панель навигации.
Ключевые понятия
В следующей таблице представлен обзор ключевых концепций навигации и основных типов, которые вы используете для их реализации.
Концепция  | Цель  | Тип  | 
|---|---|---|
Хозяин  | Элемент пользовательского интерфейса, содержащий текущий пункт назначения навигации. То есть, когда пользователь перемещается по приложению, приложение по существу меняет места назначения на хост навигации и обратно.  | 
  | 
График  | Структура данных, которая определяет все пункты назначения навигации в приложении и то, как они соединяются друг с другом.  | |
Контроллер  | Центральный координатор управления навигацией между пунктами назначения. Контроллер предлагает методы навигации между пунктами назначения, обработки глубоких ссылок, управления обратным стеком и многого другого.  | |
Место назначения  | Узел в графе навигации. Когда пользователь переходит к этому узлу, хост отображает его содержимое.  | Обычно создается при построении графа навигации.  | 
Маршрут  | Уникально идентифицирует пункт назначения и все необходимые для него данные. Вы можете перемещаться по маршрутам. Маршруты доставят вас к местам назначения.  | Любой сериализуемый тип данных.  | 
Преимущества и особенности
Компонент «Навигация» предоставляет ряд других преимуществ и функций, в том числе следующие:
- Анимации и переходы: предоставляет стандартизированные ресурсы для анимации и переходов.
 - Глубокие ссылки: реализуют и обрабатывают глубокие ссылки, которые направляют пользователя непосредственно к месту назначения.
 - Шаблоны пользовательского интерфейса: поддерживает такие шаблоны, как панели навигации и нижняя навигация, с минимальной дополнительной работой.
 - Безопасность типов: включает поддержку передачи данных между пунктами назначения с безопасностью типов .
 -  Поддержка ViewModel: позволяет ограничить 
ViewModelнавигационным графом для обмена данными, связанными с пользовательским интерфейсом, между пунктами назначения графа. - Транзакции фрагментов: полностью поддерживает и обрабатывает транзакции фрагментов.
 - Назад и вверх: по умолчанию корректно обрабатываются действия назад и вверх.
 
Настройте свою среду
 Чтобы включить поддержку навигации в свой проект, добавьте следующие зависимости в файл build.gradle вашего приложения:
классный
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.5" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Котлин
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.5" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Информацию о добавлении других компонентов архитектуры в проект см. в разделе Добавление компонентов в проект .
Следующие шаги
Дополнительную документацию и ресурсы, связанные с компонентом навигации, см. в следующих ресурсах.
Подробные руководства
 Дополнительные сведения о том, как реализовать навигационный узел и NavController , а также подробности о том, как они взаимодействуют с Compose и другими платформами пользовательского интерфейса, см. в следующих руководствах:
-  Создание контроллера навигации : описывает, как создать 
NavController. - Создайте граф навигации . Подробно о том, как создать хост навигации и граф навигации.
 -  Навигация к пункту назначения : демонстрирует, как использовать 
NavControllerдля перемещения между пунктами назначения на графике. 
Кодлабы
- Изучите навигацию на реактивном ранце
 - Фрагменты и компонент навигации
 - Создайте адаптивное приложение с динамической навигацией.
 
Видео
- Навигационная навигация
 - 10 лучших практик перехода к одному виду деятельности
 - Отдельное мероприятие: почему, когда и как (Android Dev Summit '18)
 - Android Jetpack: управление навигацией пользовательского интерфейса с помощью навигационного контроллера (Google I/O '18)