본문 바로가기

Android App 개발

Android Studio EditText 키보드 입력 안됨(Android input not working) - W/IInputConnectionWrapper: on inactive InputConnection Error

저번에 썼던 글인 'activity와 adapter 간의 상호작용'의 맨 마지막에 참고로 썼던 내용인데요,

키보드가 입력도 안되고 사라져서 열받았던게 생각나서 따로 글로 써보려고 합니다.

editText에 input type number로 입력을 하려고 누르면 아래의 error가 뜨면서 키보드가 사라지는 경우입니다.

 

W/IInputConnectionWrapper: beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper: getSelectedText on inactive InputConnection
W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection

 

EditText에 TextWatcher를 추가했던 Adapter Class 코드입니다. 

etWishPrice.addTextChangedListener(object : TextWatcher {
            override fun afterTextChanged(s: Editable?) {
            }

            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
            }

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                if (s.toString().replace(" ", "") != "") {
                    wish.price = Integer.parseInt(s.toString())
                }
                total = 0
                for (w in wishList) {
                    if (w.price != null) {
                        total += w.price!!
                    }
                }
                calTotal.cal(total.toString())
            }
        })

price입력 칸을 누르면 숫자키보드가 사라지고 다른 곳으로 커서가 이동했는데요,

TextChangedListener가 Activity Class에 있는 total에 영향을 주면서 생기는 문제인 것 같습니다.

 

해결방법은 키보드 속성을 변경하는 것입니다.

키보드가 레이아웃에 영향을 주지 않게 만드는 속성입니다.

AndroidManifest.xml 파일에서 activity를 찾아 다음 코드를 추가하시면 됩니다.

android:windowSoftInputMode="adjustPan"

 

✨키보드 속성 참고 블로그 : mixup.tistory.com/115

<activity android:name=".WishActivity"
            android:windowSoftInputMode="adjustPan"/>

<해결 후>

가격 입력 칸에 커서를 두면 숫자 키보드가 나오고, 키보드를 내려야 total이 보이게 변경되었습니다.