Метод clearBackStack
Метод clearBackStack класса
NavController
удаляет из стопки destination,
связанные с переданным route.
Возвращает число удалённых записей.
Им пользуются, когда нужно обнулить
историю внутри группы маршрутов
перед новым navigate.
Синтаксис
navController.clearBackStack("details")
Параметры
| Параметр | Описание |
|---|---|
route |
Строковый маршрут или id destination, для которого чистят стопку. |
Пример
Давайте очистим стопку details перед новым входом:
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.clearBackStack("details")
navController.navigate("details")
}) {
Text(text = "abcde")
}
}
composable("details") {
Text(text = "12345")
}
}
}
}
}
После нажатия откроется details
с текстом "12345" без лишних
записей details в стопке.
Пример
Давайте вернёмся на home и снова вызовем clearBackStack:
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") {
Text(text = "abcde")
}
composable("details") {
Button(onClick = {
navController.clearBackStack("details")
navController.popBackStack()
}) {
Text(text = "12345")
}
}
}
}
}
}
На details кнопка очистит стопку маршрута
и popBackStack покажет home с "abcde".
Смотрите также
-
метод
popBackStack,
который снимает только верхний экран -
метод
popUpTo,
который режет стопку при navigate -
класс
NavBackStackEntry,
записи которого удаляет clearBackStack -
метод
navigate,
который часто идёт после очистки