[Issue] InputMethodManager: hideSoftInputFromWindow ignore mServedView == null or mServedView.getWindowToken() != windowToken

노준혁·2023년 5월 3일
0

문제 정의

  • Custom Dialog에서 TextField를 통해 텍스트를 입력 받다가 키보드 외 공간을 클릭했을 때 키보드를 숨기는 로직 구성 중 발생

문제 접근

  • InputMethodManager: hideSoftInputFromWindow ignore mServedView == null or mServedView.getWindowToken() != windowToken
    logcat을 통해 다음 에러 메세지를 보고 LocalSoftKeyboardController.current 선언 위치가 문제인 것으로 판단

문제 해결

dialog가 새로 띄어지고 새로 띄어지는 view에서 keyboardController 로직 처리

@Composable
fun Test(
    value: String,
    setShowDialog: (Boolean) -> Unit,
    setValue: (String) -> Unit,
) {
	// 선언 위치가 여기가 되면 안됨.
	// val keyboardController = LocalSoftwareKeyboardController.current

    val txtFieldError = remember { mutableStateOf("") }
    val txtField = remember { mutableStateOf(value) }

    Dialog(
        onDismissRequest = { setShowDialog(true) },
        properties = DialogProperties(usePlatformDefaultWidth = false)
    ) {
        val keyboardController = LocalSoftwareKeyboardController.current

        Surface(
            modifier = Modifier
                .width(700.dp)
profile
https://github.com/nohjunh

0개의 댓글