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
相关产品推荐
相关产品推荐

