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

Класс NavBackStackEntry

Класс NavBackStackEntry - одна запись в стопке навигации: какой маршрут открыт и какие аргументы к нему пришли. Пакет аргументов лежит в свойстве arguments типа SavedStateHandle или Bundle в зависимости от API. В composable-маршруте entry часто приходит параметром лямбды у composable.

Синтаксис

composable("details") { entry -> val args = entry.arguments }

Пример

Давайте прочитаем строковый аргумент на экране details:

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") } } } } }

На экране details текст возьмётся из arguments записи стопки для маршрута с параметром.

Пример

Давайте перейдём на details с аргументом в route:

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/abcde") }) { 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") } } } } }

После нажатия на экране details появится текст "abcde" из arguments entry.

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

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