Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
241 of 502 menu
◀ ▶

Класс NavController

Класс NavController хранит текущий граф навигации и стопку открытых экранов. Через него вызывают переход на маршрут, возврат назад и очистку стопки. В Compose тот же API есть у NavHostController, который возвращает rememberNavController.

Синтаксис

navController.navigate("details")

Методы

Метод Описание
navigate Открывает маршрут по строке и кладёт его на верх стопки.
popBackStack Снимает верхний экран со стопки и показывает предыдущий.
navigateUp Идёт на уровень выше по иерархии графа, если для текущего экрана задан родитель.
clearBackStack Убирает из стопки записи для указанного маршрута.

Пример

Давайте откроем details и вернёмся назад:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val navController = rememberNavController() NavHost( navController = navController, startDestination = "home", ) { composable("home") { Button(onClick = { navController.navigate("details") }) { Text(text = "abcde") } } composable("details") { Button(onClick = { navController.popBackStack() }) { Text(text = "12345") } } } } } }

Сначала на экране кнопка "abcde", после перехода - кнопка "12345", которая снова показывает home.

Смотрите также

  • класс NavHostController,
    который расширяет NavController в Compose
  • функция NavHost,
    которая рисует экран по контроллеру
  • класс NavBackStackEntry,
    который описывает один экран в стопке
  • класс NavOptionsBuilder,
    которым настраивают переход navigate
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить