由于 jetpack compose android 中的检查失败而导致崩溃

Nik*_*Nik 4 android android-jetpack android-jetpack-navigation android-jetpack-compose

我在活动之间(例如活动 A 到活动 B)传递一个可序列化的数据类。活动 B 有 Jetpack Composable 视图。当我通过单击按钮从活动 A 导航到活动 B 时,出现以下崩溃

Process: uk.gov.tfl.gotfl, PID: 10022
    java.lang.IllegalStateException: Check failed.
        at androidx.compose.runtime.saveable.SaveableStateRegistryImpl.performSave(SaveableStateRegistry.kt:150)
        at androidx.compose.ui.platform.DisposableSaveableStateRegistry_androidKt.DisposableSaveableStateRegistry$lambda-0(DisposableSaveableStateRegistry.android.kt:83)
        at androidx.compose.ui.platform.DisposableSaveableStateRegistry_androidKt.$r8$lambda$sa5VqeXN41zeUSACzKO7aWvSsug(Unknown Source:0)
        at androidx.compose.ui.platform.DisposableSaveableStateRegistry_androidKt$$ExternalSyntheticLambda0.saveState(Unknown Source:2)
        at androidx.savedstate.SavedStateRegistry.performSave(SavedStateRegistry.java:240)
        at androidx.savedstate.SavedStateRegistryController.performSave(SavedStateRegistryController.java:99)
        at androidx.activity.ComponentActivity.onSaveInstanceState(ComponentActivity.java:358)
        at android.app.Activity.performSaveInstanceState(Activity.java:2169)
        at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1625)
        at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:5680)
        at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:5051)
        at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:5016)
        at android.app.ActivityThread.handleStopActivity(ActivityThread.java:5090)
        at android.app.servertransaction.StopActivityItem.execute(StopActivityItem.java:40)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2246)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:233)
        at android.app.ActivityThread.main(ActivityThread.java:8010)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
Run Code Online (Sandbox Code Playgroud)

有谁知道我为什么会崩溃?我没有做任何不同的事情。它简单明了。

小智 12

这可能是由于将 RememberSaveable 与未实现 Serialized 的数据类型一起使用引起的。数据需要能够保存到包中,如果不能,那么您会看到“检查失败”错误。