Функция rememberNavController
Функция rememberNavController создаёт
контроллер навигации и хранит его между
перерисовками Compose. Возвращает
NavHostController,
который передают в
NavHost
и вызывают у него
navigate
и другие методы базового
NavController.
Синтаксис
val navController = rememberNavController()
Пример
Давайте создадим контроллер и передадим его в NavHost:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
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")
}
}
}
}
}
На экране откроется стартовый маршрут "home"
с текстом "abcde".
Пример
Давайте добавим второй маршрут и перейдём на него:
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") {
Text(text = "12345")
}
}
}
}
}
На экране сначала будет кнопка с подписью "abcde",
после нажатия откроется экран "details"
с текстом "12345".
Смотрите также
-
функция
NavHost,
куда передают контроллер и граф маршрутов -
класс
NavHostController,
который возвращает rememberNavController -
класс
NavController,
откуда контроллер берёт методы перехода -
класс
NavGraphBuilder,
в лямбде которого описывают composable-маршруты