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

Метод dialog

Метод dialog класса NavGraphBuilder работает как composable, но destination рисуется диалогом поверх текущего экрана. Маршрут задают в route, содержимое - в лямбде с composable UI.

Синтаксис

dialog("details") { Text("12345") }

Параметры

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

Пример

Давайте откроем dialog-маршрут details поверх home:

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.dialog 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") } } dialog("details") { Text(text = "12345") } } } } }

На экране home останется кнопка "abcde", а поверх появится диалог с текстом "12345".

Пример

Давайте закроем диалог через popBackStack:

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.dialog 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") } } dialog("details") { Button(onClick = { navController.popBackStack() }) { Text(text = "12345") } } } } } }

После нажатия в диалоге останется только экран home с кнопкой "abcde".

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

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