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

Метод 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,
    которым уходят на вложенный экран
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить