android - Kotlin 中 addTextChangedListener(TextWatcher) 无限循环上的 EditText settext
问题描述
我正在使用Kotlin。我需要检查EditText值并为该值添加一些逻辑并将值设置为相同的 EditText 每个字符。但不幸的是,它正在无限循环。我使用了下面的代码。
EditText amount_txtAmount = findViewById(R.id.amount_txtAmount)
amount_txtAmount.addTextChangedListener(object : TextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
}
override fun afterTextChanged(s: Editable) {
if (amount_txtAmount.text.toString().length > 0) {
var amount1 = ValidationUtil.commaSeparateAmount(amount_txtAmount.text.toString())
Log.e("formatAmount-->", amount1)
amount_txtAmount.setText(amount1)
}
}
})
请帮助如何克服无限循环。
解决方案
我不确定在回调中操作文本是最好的解决方案,但如果你想这样做,修复无限循环的一种可能方法是删除并添加侦听器
override fun afterTextChanged(s: Editable) {
if (amount_txtAmount.text.toString().length > 0) {
amount_txtAmount.removeTextChangedListener(this)
var amount1 = ValidationUtil.commaSeparateAmount(amount_txtAmount.text.toString())
Log.e("formatAmount-->", amount1)
amount_txtAmount.setText(amount1)
amount_txtAmount.addTextChangedListener(this)
}
}
推荐阅读
- swift - Swift 合并链请求
- ios - 未为使用 getBoundStreams 创建的 InputStream 调用 StreamDelegate 方法
- vb.net - 在 vb.net 中调试?
- java - 使用默认构造函数创建新实例时出现问题。默认构造函数触发了异常
- python - Kivy MDDatePicker - 类型错误:__init__() 缺少 1 个必需的位置参数:“回调”
- c++ - 将 CRTP 与抽象类继承一起使用是否正确?
- ios - Flutter ios:找不到相机/CameraPlugin.h'文件
- html - 防止第 n 个孩子选择嵌套 div 内的元素
- r - Arules 中规则的并集和交集在算术上是有意义的
- masstransit - 具有多个 ExecuteActivities 的 Masstransit Testharness 未按预期创建端点