The User can enter only one digit in the edit text. if he enters the value in
My kotlin solution for this
private fun addEditTextListener(editText: EditText?, nextEditText: EditText?) {
editText?.setOnFocusChangeListener { view, focused ->
if (focused) {
editText.text = null
}
}
editText?.addTextChangedListener {
if (it.toString().isNotEmpty()) {
if (nextEditText != null) {
nextEditText.requestFocus()
} else {
viewModel.confirmCode(
binding?.digit1?.text?.toString(),
binding?.digit2?.text?.toString(),
binding?.digit3?.text?.toString(),
binding?.digit4?.text?.toString(),
)
}
}
}
}
And setting the listeners
override fun setupViews() {
addEditTextListener(binding?.digit1, binding?.digit2)
addEditTextListener(binding?.digit2, binding?.digit3)
addEditTextListener(binding?.digit3, binding?.digit4)
addEditTextListener(binding?.digit4, null)
}