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

Android Kotlin LoginActivity代码报错求助:setOnClickListener逻辑问题

LoginActivity 登录校验逻辑错误排查与修复

核心错误点

  • 声明了binding变量但未初始化,导致无法通过View Binding正确引用控件
  • 直接使用控件ID(如bt_entrar、edit_text_user_email)而非binding调用,会引发空指针或控件找不到的异常
  • 密码校验的提示文本逻辑矛盾:代码判断密码长度小于6,但提示写的是“Max 6 Caracteres”(最多6位),实际逻辑是要求至少6位

修正后的完整代码

class LoginActivity : AppCompatActivity() {
    private lateinit var binding: ActivityLoginBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 初始化View Binding,替换原setContentView方式
        binding = ActivityLoginBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // 通过binding引用登录按钮设置点击事件
        binding.bt_entrar.setOnClickListener {
            val email = binding.edit_text_user_email.text.toString().trim()
            val senha = binding.edit_text_user_senha.text.toString().trim()

            if (email.isEmpty()) {
                binding.edit_text_user_email.error = "Preencha o Campo Email!"
                binding.edit_text_user_email.requestFocus()
                return@setOnClickListener
            }

            if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
                binding.edit_text_user_email.error = "Email Invalido!"
                binding.edit_text_user_email.requestFocus()
                return@setOnClickListener
            }
            
            if (senha.isEmpty() || senha.length < 6) {
                // 修正提示文本,匹配逻辑(至少6位)
                binding.edit_text_user_senha.error = "Preencha o Campo Senha com pelo menos 6 Caracteres!"
                binding.edit_text_user_senha.requestFocus()
                return@setOnClickListener
            }
            
            // 校验通过后可在此添加登录逻辑
        }
    }
}

关键修改说明

  1. 初始化View Binding:使用ActivityLoginBinding.inflate(layoutInflater)创建binding实例,并用binding.root作为布局内容,这是View Binding的标准用法
  2. 统一控件引用方式:所有控件(按钮、输入框)都必须通过binding.xxx调用,不能直接写控件ID
  3. 修正提示文本:把密码提示改成符合逻辑的“至少6位”,避免用户误解

内容的提问来源于stack exchange,提问作者Marcel Mendes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:35:31