如何真正重置 editText 以显示修改后的提示

How to really reset an editText in order to show a modified hint

我想重置编辑文本。我试过 getText().clear() 但没有出现提示。设置为“”不是我的目标,因为侦听器再次触发。我的目标只是再次显示提示。如何?

最终编辑问题: 最终目标是用另一个字符替换一个字符,所以我考虑使用提示。但实际上,还有更好的解决办法。请参阅下面我的答案,或系统答案的罪人的更漂亮的解决方案。

旧编辑 1:

  override fun afterTextChanged(p0: Editable?) {
            var hintSave:String=PKd.text.toString().replace(".","+")
            if (!PKd.text.isNullOrEmpty()){
            Handler().postDelayed({
            PKf.setText("Pkf")
                PKd.setText("")
                PKd.hint=hintSave
            }, 3000)}
        }

旧编辑 2:

提示没有以一种方式出现是什么问题。我们可以延迟输入以仅考虑一次输入吗?

与您的答案相同,但更具科特林风格

val Pkd = findViewById<EditText>(R.id.editTexT_PKd)
val regex = Regex("[.,]")
Pkd.doAfterTextChanged {
    if (it?.contains(regex) == true) {
        Pkd.setText(it.replace(regex, "+"))
        Pkd.setSelection(it.length)
    }
}

这是我的问题的解决方案,即在输入值时将字符替换为 editText 中的另一个字符。在这里,我想替换“,”或“。”通过“+”。

代码解决方案:

val PKd = findViewById<EditText>(R.id.editTexT_PKd)
        PKd.addTextChangedListener(object : TextWatcher {

            override fun afterTextChanged(editable: Editable?) {
                PKd.setSelection(editable?.length!!)
            }


            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
            }

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                PKd.removeTextChangedListener(this)
                PKd.setText(PKd.text.toString().replace(",", "+").replace(".", "+"))
                PKd.addTextChangedListener(this)

            }
        })