Класс 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,
которым переключают маршруты из графа