У меня есть 2 editTexts. При изменении editText1 содержимое editText2 будет равно editText1 * 5. При изменении editText2 содержимое editText1 будет равно editText2 * 5.
Теперь, если я использую addTextChangedListener()
, он зацикливается, потому что содержимое editTexts всегда будет меняться, вызывая сбой. Мне нужно определить, изменяются ли editTexts пользователем или программно.
Есть идеи?
Если можете помочь, вот мой код:
fun EditText.doubleValue() = text.toString().toDoubleOrNull() ?: 0.0
editText1.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
override fun afterTextChanged(editable: Editable) {
editText2.setText(editText1.doubleValue() * 5)
}
})
editText2.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
override fun afterTextChanged(editable: Editable) {
editText1.setText(editText2.doubleValue() * 5)
}
})
РЕДАКТИРОВАТЬ: РЕШЕНО
Я использовал if(editText.isFocused)
, чтобы проверить, был ли пользователь изменен