Код: Выделить всё
@Composable
fun ButtonNavigationApp() {
val navController = rememberNavController()
Scaffold(
bottomBar = { BottomNavigationBar(navController) }
) { innerPadding ->
NavHost(
navController = navController,
startDestination = "Home"
) {
addHomeScreen()
addWebScreen()
}
}
}
Код: Выделить всё
fun NavGraphBuilder.addHomeScreen() {
composable("Home") {
Text("Home is here")
}
}
Код: Выделить всё
fun NavGraphBuilder.addWebScreen() {
composable("Web") {
AndroidView(
onReset = {}, // Add to reuse the view as documentation says.
factory = { context ->
WebView(context).apply {
// Initializing web-view here
}
},
update = { it.loadUrl("google.com") }
)
}
}
Код: Выделить всё
@Composable
fun BottomNavigationBar(navController: NavHostController) {
...
NavigationBar {
NavigationBarItem(
...
onclick = {
navController.navigate("Home") {
popUpTo(navController.graph.startDestinationId) { saveState = true }
launchSingleTop = true
restoreState = true
}
}
...
)
NavigationBarItem(
...
onclick = {
navController.navigate("Web") {
popUpTo(navController.graph.startDestinationId) { saveState = true }
launchSingleTop = true
restoreState = true
}
}
...
)
}
}
Я проверил и обнаружил, что экран создания сообщения воссоздается, поэтому веб-представление воссоздается снова. Как я могу заставить навигацию не создавать еще один экземпляр веб-представления?
Подробнее здесь: https://stackoverflow.com/questions/792 ... -navigatio