如何解决addTextChangedListener 第二次不工作 - Android Kotlin Viewmodel
在我的应用中,我有一个场景来显示 2 个不同的 UI。 所以我创建了一个根布局并向它添加视图。添加视图后,我调用一个函数来监听文本的变化。 以下是我的做法:
when (shapes) {
Shapes.CIRCLE -> {
var view = View.inflate(this,R.layout.layout_config_circle,null)
layout_properties_container.addView(view)
mainviewmodel.validateFields(edit_text_radius)
}
Shapes.RECTANGLE -> {
var view = View.inflate(this,R.layout.layout_config_rectangle,null)
layout_properties_container.addView(view)
mainviewmodel.validateFields(edit_text_length,edit_text_width)
}
Shapes.SQUARE -> {
var view = View.inflate(this,R.layout.layout_config_square,null)
layout_properties_container.addView(view)
mainviewmodel.validateFields(edit_text_size)
}
}
以及 viewmodel 中的 validateFields()
函数:
fun validateFields(vararg editTexts: EditText) {
editTexts.forEach {
it.addTextChangedListener(object : TextWatcher{
override fun beforeTextChanged(p0: CharSequence?,p1: Int,p2: Int,p3: Int) {
println("before changed")
}
override fun onTextChanged(p0: CharSequence?,p3: Int) {
if(editTexts.any { it.length()==0 }){
isValid.postValue(false)
}
else{
isValid.postValue((true))
}
}
override fun afterTextChanged(p0: Editable?) {
println("after changed")
}
})
}
}
这是第一次对每个形状都有效。
如果我第一次加载圆形、矩形或正方形,它就可以工作。
如果我将它从矩形改回圆形,它就会停止工作。
我可以看到 addTextChangedListener
附加到编辑文本,但它从未出现在任何 textChanged
回调中。
请帮忙。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。