ste
01/13/2022, 1:30 PMClassCastException
with the following minimal snippet:
var something by rememberSaveable { mutableStateOf(0) }
val value by rememberSaveable(something) { mutableStateOf("Hello") }
val somethingElse by rememberSaveable { mutableStateOf(false) } // !!!
println("value: $value") // !!!
Box(
modifier = Modifier
.fillMaxSize()
.clickable { something += 1 }
)
However, after something
is changed, it throws java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
on configuration change. I know the example doesn't make sense, but is this a bug or whatsoever?ste
01/13/2022, 1:32 PMvalue
and somethingElse
value restoresAndrey Kulikov
01/13/2022, 4:22 PMZach Klippenstein (he/him) [MOD]
01/13/2022, 4:24 PMZach Klippenstein (he/him) [MOD]
01/13/2022, 4:25 PMvalue
, or adding one to somethingElse
, seems to avoid the crashZach Klippenstein (he/him) [MOD]
01/13/2022, 4:48 PMZach Klippenstein (he/him) [MOD]
01/13/2022, 4:56 PM{0, "Hello", false}
, then after the button is clicked, it’s {1, false, "Hello"}
. If you haven’t filed a bug yet, i will.Andrey Kulikov
01/13/2022, 4:57 PMZach Klippenstein (he/him) [MOD]
01/13/2022, 5:02 PMAndrey Kulikov
01/13/2022, 5:08 PMsomethingElse
is defined before value
in your exampleZach Klippenstein (he/him) [MOD]
01/13/2022, 5:11 PMrememberSaveable
once. Only then you’d need to manage re-initializing the "Hello"
state when something
changed, but since i’m guessing your real code that triggered this is more complex i’m guessing you might eventually want to factor out a state holder anyway.ste
01/13/2022, 5:36 PM