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

Firebase Auth触发java.lang.NullPointerException 登录Activity崩溃问题求助

问题根因

你代码中的FirebaseAuth实例从未完成初始化,点击登录按钮时调用auth!!.signInWithEmailAndPassword触发空指针异常,和你日志输出的崩溃堆栈完全匹配。

具体问题定位
  • 你在类顶部声明了可空变量private var auth: FirebaseAuth? = null,但整个onCreate生命周期中没有对该变量赋值,其值一直为null
  • Kotlin的非空断言运算符!!遇到null值时会直接抛出NullPointerException,对应你日志中标注的SignInActivity.kt:49行代码
修复方案

在onCreate方法的setContentView执行前,补充FirebaseAuth初始化逻辑即可:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val binding = ActivitySignInBinding.inflate(layoutInflater)
    // 新增初始化代码
    auth = FirebaseAuth.getInstance()
    setContentView(binding.root)
    // 原有后续逻辑
}
可选优化建议
  • 尽量避免使用非空断言!!,改用空安全调用降低崩溃概率:
auth?.signInWithEmailAndPassword(email, password)?.addOnCompleteListener(this) {
    // 原有登录结果处理逻辑
} ?: run {
    Toast.makeText(applicationContext, "认证服务未就绪", Toast.LENGTH_SHORT).show()
}
  • 如果你确认auth一定会在使用前完成初始化,可以将变量声明改为lateinit var auth: FirebaseAuth,无需设置可空,忘记初始化时会抛出更明确的未初始化异常,方便问题定位
  • 现有输入校验逻辑使用了&&逻辑与,仅在邮箱和密码同时为空时才会提示,建议改为||逻辑或,只要任意一项为空就触发提示,避免无效请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:45:00