FunkyMuse
03/05/2021, 12:22 PM@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun SearchInput(onInputText: (inputText: String) -> Unit = {}) {
val keyboardController = LocalSoftwareKeyboardController.current
var inputText by rememberSaveable { mutableStateOf("") }
val invalidInput = inputText.isBlank()
OutlinedTextField(
modifier = Modifier
.fillMaxWidth()
.padding(start = 24.dp, end = 24.dp),
isError = invalidInput,
label = { Text(text = stringResource(id = R.string.search)) },
value = inputText,
onValueChange = { inputText = it },
keyboardOptions = KeyboardOptions(
KeyboardCapitalization.Words, autoCorrect = false,
keyboardType = KeyboardType.Text, imeAction = ImeAction.Search
),
keyboardActions = KeyboardActions(onSearch = {
keyboardController?.hideSoftwareKeyboard()
onInputText(inputText)
})
)
}
Hey guys, the code above crashes when the app goes into onPause/onStop
the error is
java.lang.RuntimeException: Parcel: unable to marshal value androidx.compose.runtime.SnapshotMutableStateImpl@f5abce7
at android.os.Parcel.writeValue(Parcel.java:1926)
at android.os.Parcel.writeList(Parcel.java:1133)
at android.os.Parcel.writeValue(Parcel.java:1873)
at android.os.Parcel.writeMapInternal(Parcel.java:984)
at android.os.Parcel.writeMap(Parcel.java:966)
at android.os.Parcel.writeValue(Parcel.java:1838)
at android.os.Parcel.writeMapInternal(Parcel.java:984)
at android.os.Parcel.writeMap(Parcel.java:966)
at android.os.Parcel.writeValue(Parcel.java:1838)
at android.os.Parcel.writeList(Parcel.java:1133)
at android.os.Parcel.writeValue(Parcel.java:1873)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:1016)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
at android.os.Bundle.writeToParcel(Bundle.java:1303)
at android.os.Parcel.writeBundle(Parcel.java:1085)
at android.os.Parcel.writeValue(Parcel.java:1842)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:1016)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
at android.os.Bundle.writeToParcel(Bundle.java:1303)
at android.os.Parcel.writeBundle(Parcel.java:1085)
at android.os.Parcel.writeValue(Parcel.java:1842)
at android.os.BaseBundle.dumpStats(BaseBundle.java:1690)
at android.os.BaseBundle.dumpStats(BaseBundle.java:1727)
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:150)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:974)
if i use
var inputText by remember { mutableStateOf("") }
the issue goes away
i've made the code by the Unidirectional data flow in Jetpack Compose documentationAndrey Kulikov
03/05/2021, 12:36 PMFunkyMuse
03/05/2021, 12:37 PM