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

Метод composable

Метод composable класса NavGraphBuilder связывает строковый route с composable-содержимым экрана. Список arguments задаёт параметры в шаблоне маршрута, лямбда рисует UI и может принять NavBackStackEntry.

Синтаксис

composable("home") { Text("abcde") }

Параметры

Параметр Описание
route Строковый идентификатор экрана. Его передают в navigate.
arguments Список navArgument с типами из NavType. Нужен, если в route есть плейсхолдеры.
content Лямбда с UI экрана. Может принимать NavBackStackEntry для чтения arguments.

Пример

Давайте зарегистрируем два простых маршрута:

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".

Пример

Давайте откроем details через navigate:

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

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

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

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