Метод navigateUp
Метод navigateUp класса
NavController
пытается подняться на родительский destination
в иерархии графа, как кнопка «вверх»
в ActionBar. Если родителя нет,
поведение близко к
popBackStack.
Возвращает true, если переход
удалось выполнить.
Синтаксис
navController.navigateUp()
Пример
Давайте поднимемся из вложенного 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.navigation
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("flow/details") }) {
Text(text = "abcde")
}
}
navigation(
startDestination = "details",
route = "flow",
) {
composable("details") {
Button(onClick = { navController.navigateUp() }) {
Text(text = "12345")
}
}
}
}
}
}
}
После navigateUp снова откроется home
с кнопкой "abcde".
Пример
Давайте повесим navigateUp на 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.navigateUp()
}
Text(text = "12345")
}
}
}
}
}
На details «назад» вызовет navigateUp и вернёт экран home.
Смотрите также
-
метод
popBackStack,
который просто снимает верхний экран -
метод
navigation,
который задаёт иерархию для navigateUp -
функция
BackHandler,
куда часто ставят вызов navigateUp -
метод
navigate,
которым уходят на вложенный экран