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

Класс NavOptionsBuilder

Класс NavOptionsBuilder - приёмник лямбды во второй форме navigate. Внутри задают, как изменить стопку при переходе: куда срезать историю, нужен ли single top и сохранение state. Главный метод для стопки - popUpTo.

Синтаксис

navController.navigate("details") { popUpTo("home") { inclusive = false } }

Методы

Метод Описание
popUpTo Удаляет записи стопки до указанного маршрута перед новым переходом.

Пример

Давайте откроем 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.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") { popUpTo("home") { inclusive = false } } }) { Text(text = "abcde") } } composable("details") { Text(text = "12345") } } } } }

На экране details «назад» сразу выйдет за пределы home, потому что под ним не останется лишних записей.

Пример

Давайте включим inclusive и уберём 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.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") { popUpTo("home") { inclusive = true } } }) { Text(text = "abcde") } } composable("details") { Text(text = "12345") } } } } }

После перехода на details в стопке останется только этот экран с "12345".

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

  • метод popUpTo,
    который подробно режет стопку
  • метод navigate,
    куда передают лямбду NavOptionsBuilder
  • метод clearBackStack,
    который чистит стопку отдельным вызовом
  • метод popBackStack,
    которым возвращаются без новых опций
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить