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

Функция NavHost

Функция NavHost рисует composable для текущего маршрута в стопке навигации. Контроллер передают в navController, первый экран задают в startDestination, маршруты описывают в лямбде с приёмником NavGraphBuilder.

Синтаксис

NavHost( navController = navController, startDestination = "home", ) { composable("home") { } composable("details") { } }

Параметры

Параметр Описание
navController Контроллер навигации. Обычно его получают через rememberNavController. Тип - NavHostController.
startDestination Строковый маршрут, с которого открывается граф при первом показе.
builder Лямбда с приёмником NavGraphBuilder. Внутри вызывают composable и другие методы построения графа.

Пример

Давайте соберём граф из двух маршрутов:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent 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") { Text(text = "abcde") } composable("details") { Text(text = "12345") } } } } }

На экране появится маршрут "home" с текстом "abcde", пока контроллер не переключит destination.

Пример

Давайте перейдём с home на 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") { Text(text = "12345") } } } } }

После нажатия NavHost покажет экран "details" с текстом "12345".

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

  • функция rememberNavController,
    которой создают контроллер для NavHost
  • класс NavGraphBuilder,
    где описывают методы composable и navigation
  • метод navigate,
    которым переключают текущий экран
  • функция BackHandler,
    которой перехватывают кнопку «назад» на экране
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить