I’m getting `ClassCastException` for String to Ann...
# compose
k
I’m getting
ClassCastException
for String to AnnotatedString when passing in String to
TextFieldValue
in Compose snapshot
7094152
Stacktrace ⤵️
Copy code
java.lang.ClassCastException: java.lang.String cannot be cast to androidx.compose.ui.text.AnnotatedString
        at androidx.compose.ui.text.input.TextFieldValue$Companion$Saver$2.invoke(TextFieldValue.kt:183)
        at androidx.compose.ui.text.input.TextFieldValue$Companion$Saver$2.invoke(TextFieldValue.kt)
        at androidx.compose.runtime.savedinstancestate.SaverKt$Saver$1.restore(Saver.kt:70)
        at androidx.compose.runtime.savedinstancestate.SavedInstanceStateKt$mutableStateSaver$2.invoke(SavedInstanceState.kt:87)
        at androidx.compose.runtime.savedinstancestate.SavedInstanceStateKt$mutableStateSaver$2.invoke(SavedInstanceState.kt)
        at androidx.compose.runtime.savedinstancestate.SaverKt$Saver$1.restore(Saver.kt:70)
        at androidx.compose.runtime.savedinstancestate.RememberSavedInstanceStateKt.rememberSavedInstanceState(RememberSavedInstanceState.kt:76)
        at androidx.compose.runtime.savedinstancestate.SavedInstanceStateKt.savedInstanceState(SavedInstanceState.kt:62)
        at ai.adagrad.gateguard.addvisitor.name.NameUiKt.NameUi(NameUi.kt:59)
        at ai.adagrad.gateguard.addvisitor.name.NameFragment$onCreateView$1$1$1$1.invoke(NameFragment.kt:90)
        at ai.adagrad.gateguard.addvisitor.name.NameFragment$onCreateView$1$1$1$1.invoke(NameFragment.kt)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt)
        at androidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188)
        at ai.adagrad.gateguard.addvisitor.name.NameFragment$onCreateView$1$1$1.invoke(NameFragment.kt:82)
        at ai.adagrad.gateguard.addvisitor.name.NameFragment$onCreateView$1$1$1.invoke(NameFragment.kt)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt)
        at androidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188)
        at androidx.compose.material.TextKt.ProvideTextStyle(Text.kt:246)
        at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:83)
        at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt)
        at androidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188)
        at androidx.compose.material.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:74)
        at ai.adagrad.gateguard.ui.ThemeKt.FrontendSecurityTheme(Theme.kt:54)
        at ai.adagrad.gateguard.addvisitor.name.NameFragment$onCreateView$1$1.invoke(NameFragment.kt:81)
        at ai.adagrad.gateguard.addvisitor.name.NameFragment$onCreateView$1$1.invoke(NameFragment.kt)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt)
        at androidx.compose.ui.platform.ComposeView.Content(ComposeView.kt:293)
        at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.kt:161)
        at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.kt)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt)
        at androidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188)
        at androidx.compose.ui.platform.AmbientsKt.ProvideCommonAmbients(Ambients.kt:290)
        at androidx.compose.ui.platform.AndroidAmbientsKt$ProvideAndroidAmbients$3.invoke(AndroidAmbients.kt:185)
        at androidx.compose.ui.platform.AndroidAmbientsKt$ProvideAndroidAmbients$3.invoke(AndroidAmbients.kt)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146)
        at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt)
        at androidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188)
    	at androidx.compose.ui.platform.AndroidAmb
Should I file a bug report for this one?
k
Okay, so this issue occurs in the snapshot I mentioned. Has it fixed in any latest one?
j
Looks like the snapshot you mentioned (7094152) which was built approximately 2021-01-20 but the CL was merged approximately 2021-01-15, so I suppose that CL broke that snapshot. Yes, please file a bug and include a repro. Looks like the problem is not directly related to TextFieldValue which accepts an AnnotatedString in your build, but is instead somehow related to
savedInstanceState
. cc @Siyamed
s
Oops, thanks for the heads up. Not sure how exactly this happens but let me check it. Meanwhile if you can create a bug i will appreciate it.
Actually, i dont think we ever wrote an AnnotatedString serializer😱
Hi @Kshitij Patil I cannot reproduce the exception unfortunately. I suspect of a line but I cannot understand the use case, or how this happened, and without the repro I am afraid I wont be able to properly fix this.
k
Pass String to
TextFieldValue
put app in background and bring back to foreground, it'll crash