AppCompatActivity не удается восстановить задний стек Compose NavigationAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 AppCompatActivity не удается восстановить задний стек Compose Navigation

Сообщение Anonymous »

Я хотел бы знать:
Я столкнулся с ошибкой Jetpack Compose
или я делаю что-то неправильно?
Приложение ниже вылетает с исключением:

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

java.lang.IllegalStateException: Restoring the Navigation back stack failed: destination 132070424 cannot be found from the current destination ComposeNavGraph(0x0) startDestination={Destination(0xe362b7e) route=com.example.typesafenavigation.Login}
Способ воспроизведения исключения:
  • В «Параметры разработчика» установите для параметра «Ограничение фоновых процессов» значение «Нет фоновых процессов». ".
  • Откройте приложение ниже.
  • Сверните приложение ниже и откройте 2 других приложения.
  • Откройте приложение ниже еще раз.
  • Приложение ниже вылетает за исключением
Интересно то, что App не генерирует это исключение, если:
  • ComponentActivity используется вместо AppCompatActivity
  • Для маршрутизации используются простые строки, а не типобезопасный объект.
Это ошибка Jetpack Compose?
Исходный код приложения:

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

import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import kotlinx.serialization.Serializable

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = Login
) {
composable {
LoginScreen()
}
}
}
}
}

@Composable
fun LoginScreen() {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text(
text = "Login Screen",
fontSize = MaterialTheme.typography.headlineLarge.fontSize
)
}
}

@Serializable
object Login
UPD:
Пример проекта: https://github.com/SlavaGrishanin/Compose-Bug-Sample
Видео-демонстрация: https://youtube.com/shorts/u7pN7vgOSAE

Подробнее здесь: https://stackoverflow.com/questions/792 ... back-stack
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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