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

Класс NavGraphBuilder

Класс NavGraphBuilder - приёмник лямбды у функции NavHost. Его методы добавляют в граф экраны, диалоги и вложенные подграфы. Обычный экран задают через composable, модальное окно - через dialog, группу маршрутов - через navigation.

Синтаксис

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

Методы

Метод Описание
composable Регистрирует маршрут с composable-экраном.
dialog Регистрирует маршрут, который показывают как диалог поверх стопки.
navigation Создаёт вложенный граф с собственным стартовым маршрутом.

Пример

Давайте опишем два 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".

Пример

Давайте добавим вложенный граф с префиксом маршрута:

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.navigation 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") } navigation( startDestination = "details", route = "flow", ) { composable("details") { Text(text = "12345") } } } } } }

На экране по-прежнему виден home, переход на "flow/details" откроет вложенный экран с "12345".

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

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