Настройка NavHost
Определяйте граф навигации в Compose
«Настройка NavHost» — бесплатный урок Android Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Переход между экранами
В большинстве приложений больше одного экрана. Библиотека Navigation Compose позволяет переходить между компонуемыми экранами, сохраняя стек возврата.
Зависимость
Добавьте библиотеку навигации в файл Gradle, после чего получите NavController, NavHost и вспомогательные средства.
// build.gradle (module)
implementation("androidx.navigation:navigation-compose:2.7.0")NavController
NavController — это объект, который выполняет навигацию и запоминает стек возврата. Создайте его с помощью rememberNavController().
val navController = rememberNavController()NavHost
NavHost — это компонуемый элемент, который отображает текущий пункт назначения. Ему нужны контроллер и маршрут startDestination.
NavHost(
navController = navController,
startDestination = "home"
) {
// destinations go here
}Определение пунктов назначения
Внутри лямбды NavHost объявите каждый экран с помощью composable("route"). Строка является маршрутом пункта назначения.
composable("home") {
HomeScreen()
}Маршруты — это строки
Маршрут — это уникальный строковый идентификатор пункта назначения, похожий на путь URL. Переход выполняется по маршруту, а NavHost показывает соответствующий компонуемый элемент.
Граф из двух экранов
Вот минимальный граф навигации с двумя пунктами назначения. Сначала отображается "home", потому что это startDestination.
NavHost(navController, startDestination = "home") {
composable("home") { HomeScreen() }
composable("details") { DetailsScreen() }
}startDestination
startDestination — это первый экран, который видит пользователь, и корень стека возврата. Вернуться назад за него приложение не может.
Передача контроллера вниз
Экранам, запускающим навигацию, нужен NavController. Передайте его как параметр или, что лучше, передавайте простые лямбды, например onContinue, чтобы экраны можно было повторно использовать.
composable("home") {
HomeScreen(onOpenDetails = {
navController.navigate("details")
})
}Один NavHost для каждой области
Обычно в верхней части приложения используется один NavHost. Контроллер создаётся один раз с помощью rememberNavController() и используется всеми пунктами назначения.
Собираем всё вместе
Полная настройка: контроллер, узел размещения и два пункта назначения.
@Composable
fun App() {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = "home"
) {
composable("home") { HomeScreen() }
composable("details") { DetailsScreen() }
}
}Быстрая проверка
Какой объект запоминает стек возврата и выполняет навигацию?
Итоги
Настройка навигации:
rememberNavController()создаёт контроллер.NavHostотображает пункты назначения и требует указатьstartDestination.- Объявляйте экраны с помощью
composable("route"); маршруты являются уникальными строками.
Часто задаваемые вопросы
Урок «Настройка NavHost» бесплатный?
Да — полный текст урока «Настройка NavHost» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Настройка NavHost»?
Определяйте граф навигации в Compose Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Настройка NavHost»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Настройка NavHost
- Переходы между экранами
- Передача аргументов
- Нижняя навигация