동물원 예제를 만들면서 나이와 몸무게를 입력받는 곳이 있었는데 이 부분을 0 이상 값을 받을 수 있도록 유효성 검사를 하고 싶어서 찾아봤는데 변경되는 텍스트를 실시간으로 확인하여 올바른 형식으로 텍스트를 입력했는지 등을 확인할 수 있는 doAfterTextChanged
함수가 있어서 사용을 해봤습니다.
안드로이드에서 공식 문서에 의하면 텍스트가 변경된 후 호출될 작업을 추가한다고
나와있으니 제가 원하는대로 EditText 값을 입력 받은 후 doAfterTextChanged
함수를 이용해 그 안에서 유효성 검사를 하면 될 것이다 생각을 했습니다.
<EditText
android:id="@+id/editTextInputUserAge"
android:layout_width="match_parent"
android:inputType="number"
android:layout_height="wrap_content"
android:hint="나이" />
binding.run{
editTextInputUserAge.doAfterTextChanged {
val ageString = editTextInputUserAge.text.toString().trim()
if (ageString.isEmpty()) {
editTextInputUserAge.error = "나이를 입력하세요."
} else {
if (ageString.toInt() <= 0) {
editTextInputUserAge.error = "0보다 큰 수를 입력하세요."
} else {
editTextInputUserAge.error = null // 에러 메시지 지우기
}
}
}
}