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 (将#修改为@)