App_center_Project(android)

editText 엔터키를 누르면 키보드가 내려가고 키워드 등록

jhg3410 2021. 11. 1. 11:15
editText.setOnEditorActionListener { textView, action, keyEvent ->
            var handled = false

            if (action == EditorInfo.IME_ACTION_DONE) {
                Log.d("성공",editText.text.toString())
                val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                inputMethodManager.hideSoftInputFromWindow(editText.windowToken, 0)
                handled = true
            }

            handled
        }

test 프로젝트에서 해본 결과 잘된다. 문제는 이걸 기존의 프로젝트에 옮기는 건데 

일단 첫 번째는 editText에

키보드

등록 표시가 이게 아니었다. 

        android:imeOptions="actionDone"

이렇게 해주어야 등록 표시로 변경

큰 문제는 코드인데

일단 등록한 내용을 서버로 전달하고 키워드 데이터베이스에 넣어주고 등등 거쳐야 하는데

그래서 기존에 있던 코드를 그대로 또 복붙 하면 너무 더러워지니 함수로 만들어서 적용하려 했는데 안되네??

서버와 연동에 문제가 생기네? 그래서 일단은 그냥 복붙... 하니 잘된다. 또 하나는

 val editText = view.findViewById<TextView>(R.id.edit_keyword)

        editText.setOnEditorActionListener { textView, action, keyEvent ->
            var handled = false
            val edittext = view.findViewById<TextView>(R.id.edit_keyword).text.toString()

여기 editText변수를 안과 밖으로 두 개 설정해야 한다. 밖에서만 하고 안을 그대로 사용하면 등록할 때 editText가 clear 되도록 해놓아서 키워드가 빈 값으로 들어간다.

일단 이슈는 처리했는데 좀 더 코드를 간결하게 할 수 있는데.. 이게 233줄을 차지할 코드가 아닌데;

 

참고:  https://velog.io/@sainkr/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-EditText-%EC%9E%85%EB%A0%A5-%ED%9B%84-%ED%82%A4%EB%B3%B4%EB%93%9C-%EB%82%B4%EB%A6%AC%EA%B8%B0