본문 바로가기
안드로이드

[Android] EditText 입력 끝나는 시점에 이벤트 받기

by 코딩히어로 2022. 9. 23.
728x90

1


안드로이드 EditText를 이용하여 입력이 끝나는 시점에 이벤트를 실행하는 구문이 필요한데

이미 많이 안려진 TextWatcher 클래스를 이용하게 되면 입력이 되는 순간마다

이벤트가 호출되어 만약 서버로 데이터를 올리는 프로그램의 경우 너무 불필요한 통신을 하게 됩니다

이러한 것을 방지하기 위해 사용자에 의해 입력이 완료된 시점을 어떻게 체크할 수 있을까를 고민했는데

생각보다 방법은 간단한 곳에서 찾았습니다

 

바로 Focus 이벤트를 사용하는 것인데 이론적 원리로는 사용자가 EditText를 누르고

입력을 완료하고 다른 화면을 터치하거나 EditText가 Focus를 잃는다면 입력이 완료되었다는 의미입니다

 

edittest.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus){

        }else{
            program_setting.SetPHHighAlarm(edittest.getText().toString());
        }
    }
});

 

위 코드는 EditText에 setOnFocusChangeListener를 통해 Focus이벤트를 등록합니다

EditText에 포커스가 주어지거나 잃게 되었을 때 hasFocus를 통해 이벤트가 발생하게 되는데

hasFocus가 true이면 현재 EditText에 포커스가 주어진 것이고

false이면 EditText에 포커스가 사라진 시점이기 때문에

사용자의 입력이 완료된 시점 즉 EditText에서 더 이상 수정할 것이 없기에

다른 곳을 터치했다는 결론을 가지고 hasFocus가 false인 시점에서 이벤트를 처리했습니다

 

반대로 EditText를 눌렀을 때 자동적으로 값이 써진다거나 하는 등의 이벤트 처리를 위해서는

hasFocus가 true인 시점에 구현해주시면 됩니다

728x90
반응형

댓글