Навигация Jetpack Compose: виды исчезают при переключении пунктов назначенияAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Навигация Jetpack Compose: виды исчезают при переключении пунктов назначения

Сообщение Гость »


Сообщество StackOverflow!
У меня возникла проблема с навигацией Jetpack Compose с использованием NavHost и RememberNavController. Большую часть времени мое приложение работает должным образом, но иногда, когда я нажимаю кнопки для переключения между экранами, содержимое исчезает, и видимой остается только поверхность.
Изображение
Изображение
Вот упрощенная версия моего кода:

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

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
NavigationTestTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = Color.Cyan
) {
NavHost(navController = navController, startDestination = "First") {
composable(route = "First") {
FirstScreen(onButtonTap = { navController.navigate("Second") })
}
composable(route = "Second") {
SecondScreen(onButtonTap = { navController.popBackStack() })
}
}
}
}
}
}
}

@Composable
fun FirstScreen(onButtonTap: () -> Unit) {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier
.fillMaxSize()
.background(Color.Blue)
) {
CustomButton(title = "To Second View") {
onButtonTap()
}
}
}

@Composable
fun SecondScreen(onButtonTap: () -> Unit) {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier
.fillMaxSize()
.background(Color.Green)
) {
CustomButton(title = "Pop View") {
onButtonTap()
}
}
}

@Composable
fun CustomButton(title: String, onClick: () -> Unit) {
Button(
onClick = { onClick() },
modifier = Modifier.size(width = 200.dp, height = 40.dp)
) {
Text(text = title)
}
}
The expected behavior is:
  • Display the FirstScreen on the initial launch.
  • Navigate to the SecondScreen and add it to the back stack when the button in the FirstScreen is tapped.
  • Pop the SecondScreen when the button in the SecondScreen is tapped, and display the FirstScreen again.
However, sometimes when I tap buttons on both FirstScreen and SecondScreen to switch views, the views get removed from the back stack, and only the Surface with the Cyan color remains visible.
Изображение
I've tried simplifying the code and isolating the issue, but I can't seem to pinpoint the root cause. Any suggestions or insights into what might be causing this issue would be greatly appreciated.
Thank you in advance for your help!


Источник: https://stackoverflow.com/questions/781 ... stinations
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Google RouteAPI (google-cloud-dotnet): RouteMatrix — ROUTE_NOT_FOUND с использованием нескольких пунктов назначения
    Гость » » в форуме C#
    0 Ответы
    55 Просмотры
    Последнее сообщение Гость
  • Составление пунктов назначения из ViewModel
    Гость » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Гость
  • Составление пунктов назначения из ViewModel
    Anonymous » » в форуме Android
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Какой код состояния HTTP для регулярной смены пунктов назначения
    Anonymous » » в форуме Apache
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • EJBCLIENT000409: Больше нет доступных пунктов назначения.
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

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