Метод popBackStack
Метод popBackStack класса
NavController
снимает верхнюю
NavBackStackEntry
и показывает предыдущий экран.
Возвращает true, если стопку
удалось укоротить.
Так закрывают details после navigate
и dialog-маршруты.
Синтаксис
navController.popBackStack()
Пример
Давайте вернёмся с 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") }) {
Text(text = "abcde")
}
}
composable("details") {
Button(onClick = { navController.popBackStack() }) {
Text(text = "12345")
}
}
}
}
}
}
После popBackStack снова виден home
с кнопкой "abcde".
Пример
Давайте вызовем popBackStack из BackHandler:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.BackHandler
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") {
BackHandler {
navController.popBackStack()
}
Text(text = "12345")
}
}
}
}
}
На details системная кнопка «назад» снимет экран и вернёт home.
Смотрите также
-
метод
navigate,
которым кладут экран на стопку -
метод
navigateUp,
который идёт вверх по иерархии графа -
функция
BackHandler,
откуда часто вызывают popBackStack -
метод
popUpTo,
которым срезают стопку при navigate