Класс NavController
Класс NavController хранит текущий
граф навигации и стопку открытых экранов.
Через него вызывают переход на маршрут,
возврат назад и очистку стопки.
В Compose тот же API есть у
NavHostController,
который возвращает
rememberNavController.
Синтаксис
navController.navigate("details")
Методы
| Метод | Описание |
|---|---|
navigate |
Открывает маршрут по строке и кладёт его на верх стопки. |
popBackStack |
Снимает верхний экран со стопки и показывает предыдущий. |
navigateUp |
Идёт на уровень выше по иерархии графа, если для текущего экрана задан родитель. |
clearBackStack |
Убирает из стопки записи для указанного маршрута. |
Пример
Давайте откроем 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.navigate("details") }) {
Text(text = "abcde")
}
}
composable("details") {
Button(onClick = { navController.popBackStack() }) {
Text(text = "12345")
}
}
}
}
}
}
Сначала на экране кнопка "abcde",
после перехода - кнопка "12345",
которая снова показывает home.
Смотрите также
-
класс
NavHostController,
который расширяет NavController в Compose -
функция
NavHost,
которая рисует экран по контроллеру -
класс
NavBackStackEntry,
который описывает один экран в стопке -
класс
NavOptionsBuilder,
которым настраивают переход navigate