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

Класс NavType

Класс NavType описывает тип параметра в шаблоне route у composable. Значение передают в navArgument в поле type. Для строк и чисел берут готовые константы StringType, IntType и другие из таблицы ниже.

Синтаксис

navArgument("code") { type = NavType.StringType }

Значения

Значение Описание
StringType Строковый сегмент маршрута без дополнительного преобразования.
IntType Целое число из сегмента path.
LongType Длинное целое из сегмента path.
BoolType Логическое значение true или false в сегменте маршрута.
FloatType Число с плавающей точкой из сегмента path.

Пример

Давайте объявим строковый аргумент code:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text import androidx.navigation.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument 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( route = "details/{code}", arguments = listOf( navArgument("code") { type = NavType.StringType }, ), ) { entry -> val code = entry.arguments?.getString("code") Text(text = code ?: "12345") } } } } }

На экране home виден текст "abcde", на details подставится аргумент из route.

Пример

Давайте перейдём на details с IntType:

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.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument 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/12345") }) { Text(text = "abcde") } } composable( route = "details/{id}", arguments = listOf( navArgument("id") { type = NavType.IntType }, ), ) { entry -> val id = entry.arguments?.getInt("id") Text(text = id?.toString() ?: "12345") } } } } }

На details текст станет "12345" из целого аргумента маршрута.

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

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