0Pricing
Android Academy · Урок

Переходы между экранами

Перемещайтесь вперёд и назад между пунктами назначения

«Переходы между экранами» — бесплатный урок Android Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.

Движение вперёд

После настройки NavHost переход на другой экран выполняется вызовом navigate у NavController с указанием маршрута назначения.

navController.navigate("details")

Запуск из кнопки

Переход обычно выполняется в обратном вызове, например в onClick кнопки.

Button(onClick = { navController.navigate("details") }) {
    Text("Open details")
}

Стек возврата

Каждый вызов navigate помещает новое назначение в стек возврата. Системная кнопка «Назад» автоматически извлекает его из стека и возвращает на предыдущий экран.

popBackStack

Чтобы программно вернуться назад, например из пользовательской кнопки «Вверх», вызовите popBackStack. Он удаляет текущее назначение и возвращает к предыдущему.

navController.popBackStack()

navigateUp

navigateUp() работает похожим образом и подходит для стрелки «Вверх» на панели инструментов. Он учитывает иерархию навигации.

navController.navigateUp()

Предотвращение дублирования назначений

Если быстро дважды нажать кнопку, один и тот же экран может добавиться в стек дважды. Используйте launchSingleTop = true, чтобы не помещать дубликаты назначения в стек.

navController.navigate("details") {
    launchSingleTop = true
}

popUpTo

popUpTo очищает часть стека возврата во время навигации. Это полезно после входа в систему: перейдите на главный экран и удалите экран входа, чтобы кнопка «Назад» не возвращала к нему.

navController.navigate("home") {
    popUpTo("login") { inclusive = true }
}

inclusive

inclusive = true означает, что цель popUpTo также удаляется. При inclusive = false извлечение останавливается непосредственно перед ней.

Независимые экраны

Вместо передачи всего NavController на каждый экран передавайте лямбда-выражения. Экран вызывает onOpenDetails() и не знает о внутренних деталях навигации.

@Composable
fun HomeScreen(onOpenDetails: () -> Unit) {
    Button(onClick = onOpenDetails) { Text("Details") }
}

Подключение лямбда-выражения

NavHost связывает лямбда-выражение с настоящим вызовом навигации, благодаря чему логика навигации находится в одном месте.

composable("home") {
    HomeScreen(onOpenDetails = {
        navController.navigate("details")
    })
}

Соберём всё вместе

Главный экран переходит к экрану сведений, а экран сведений возвращается назад с помощью стрелки «Вверх».

composable("home") {
    HomeScreen(onOpenDetails = { navController.navigate("details") })
}
composable("details") {
    DetailsScreen(onBack = { navController.popBackStack() })
}

Быстрая проверка

Какой вызов программно возвращает пользователя на предыдущий экран?

Повторение

Навигация:

  • navigate("route") помещает назначение в стек.
  • popBackStack() / navigateUp() выполняют возврат.
  • Используйте launchSingleTop и popUpTo { inclusive }, чтобы управлять стеком.
  • Передавайте лямбда-выражения, а не контроллер, чтобы экраны оставались повторно используемыми.

Часто задаваемые вопросы

Урок «Переходы между экранами» бесплатный?

Да — полный текст урока «Переходы между экранами» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.

Чему я научусь в уроке «Переходы между экранами»?

Перемещайтесь вперёд и назад между пунктами назначения Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Android Academy?

Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Переходы между экранами»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Android Academy?

Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка NavHost
  2. Переходы между экранами
  3. Передача аргументов
  4. Нижняя навигация
← Назад к Android Academy