You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio Kotlin:密码与确认密码相同时提示文本未更新

问题原因与解决方案

核心问题是你直接用==比较两个EditText.text的Editable对象,这其实是在比较对象引用地址,而非文本内容是否一致。即使两个输入框的密码内容完全相同,它们的Editable实例也是独立的,所以==会返回false,导致确认密码的提示无法正常更新。

修复步骤:

  • 将Editable转换为字符串后再比较内容
  • 提取通用函数避免重复代码

修改后的代码:

确认密码输入框监听

binding.confirmpasswordTextbox.doOnTextChanged { text, start, before, count ->
    val password = binding.passwordTextbox.text.toString()
    val confirmPassword = text.toString()
    cpasswordFiltered = password == confirmPassword
    binding.textCPassAlert.text = if (cpasswordFiltered) "" else "As passwords não correspondem!"
}

密码输入框监听(复用检查逻辑)

binding.passwordTextbox.doOnTextChanged { text, start, before, count ->
    passwordFiltered = !isValidPassword(text)
    binding.textPassAlert.text = if (passwordFiltered) "" else "A password deve conter 8+ caracteres, uma letra maiúscula, minúscula e um caracter especial!"
    
    // 调用统一的密码匹配检查
    checkPasswordMatch()
}

// 提取的通用密码匹配检查函数
private fun checkPasswordMatch() {
    val password = binding.passwordTextbox.text.toString()
    val confirmPassword = binding.confirmpasswordTextbox.text.toString()
    cpasswordFiltered = password == confirmPassword
    binding.textCPassAlert.text = if (cpasswordFiltered) "" else "As passwords não correspondem!"
}

修改后,当密码与确认密码内容一致时会正确清空提示文本,不一致时显示错误提示。

内容的提问来源于stack exchange,提问作者alex ramos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:06:29