Compose Navigation повторно создает экземпляр WebView внутри экрана при наличии NavigationBar. ⇐ Android

Форум для тех, кто программирует под Android
Anonymous
Compose Navigation повторно создает экземпляр WebView внутри экрана при наличии NavigationBar.

Сообщение Anonymous »

В настоящее время я тестирую навигацию по созданию в соответствии с документацией. Рассмотрите возможность использования двух экранов: Главная и Интернет. Навигация используется следующим образом:

Код: Выделить всё

@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
}
}
...
)
}
}

Проблема: При переходе от Главного к экрану Интернет URL-адрес загружается должным образом. Если нажать Главная, а затем нажать Интернет, URL-адрес загружается снова (хотя модели представления сохраняются).
Я проверил и обнаружил, что экран создания сообщения воссоздается, поэтому веб-представление воссоздается снова. Как я могу заставить навигацию не создавать еще один экземпляр веб-представления?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -navigatio

Вернуться в «Android»