当前位置: 首页 > 知识库问答 >
问题:

Firebase身份验证导致致命执行:(java.lang.NullPointerException)

仉梓
2023-03-14

从我创建项目开始,这就非常有效。但突然间开始崩溃。注册活动工作正常。但是这个登录活动正在崩溃。

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.durden, PID: 7921
    java.lang.NullPointerException
        at com.example.durden.activity.SignInActivity.onCreate$lambda-2(SignInActivity.kt:49)
        at com.example.durden.activity.SignInActivity.$r8$lambda$ZBrxDCm4vr69l-PuE690AA_KCF8(Unknown Source:0)
        at com.example.durden.activity.SignInActivity$$ExternalSyntheticLambda1.onClick(Unknown Source:4)
        at android.view.View.performClick(View.java:7125)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

class SignInActivity : AppCompatActivity() {

    // getting the references from firebase
    private var auth: FirebaseAuth? = null
    private var firebaseUser: FirebaseUser? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // gets the view binding of sign_in_activity
        val binding = ActivitySignInBinding.inflate(layoutInflater)

        setContentView(binding.root)

        // ends this activity and goes to sign up page if needed
        binding.gotoSignUp.setOnClickListener {
            val intent = Intent(
                this@SignInActivity,
                SignUpActivity::class.java
            )
            startActivity(intent)
            finish()
        }

        binding.btnSignIn.setOnClickListener {

            // storing the entered email and password
            val email = binding.SImail.text.toString()
            val password = binding.SIpass.text.toString()

            // checks if the values are entered
            if (TextUtils.isEmpty(email) && TextUtils.isEmpty(password)) {
                Toast.makeText(applicationContext,"email and password are required", Toast.LENGTH_SHORT).show()
            }

            // signs in the user using firebase data
            else {
                auth!!.signInWithEmailAndPassword(email, password)
                    .addOnCompleteListener(this) {
                        if (it.isSuccessful) {
                            binding.SImail.setText("")
                            binding.SIpass.setText("")

                            // after sign in takes to user page
                            val intent = Intent(
                                this@SignInActivity,
                                UserActivity::class.java
                            )
                            startActivity(intent)
                            finish()
                        }
                        else {
                            Toast.makeText( applicationContext, "Invalid password or email", Toast.LENGTH_SHORT).show()
                        }
                    }
            }
        }

    }
}

Firebase 身份验证导致 Android 致命异常

这听起来和我的问题很相似,但我还是不明白为什么会这样。

共有2个答案

丁曦
2023-03-14

您将视图膨胀了两次,这是错误的:

val binding = ActivitySignInBinding.inflate(layoutInflater)
// setContentView(binding.root)
惠诚
2023-03-14

您永远不会初始化auth,这意味着当您执行auth!!. signInSusEmailAndPassword(email,密码)时,您会得到一个异常

在您的onCreate中初始化auth,如步骤2所示,以防止错误。

// Initialize Firebase Auth
auth = Firebase.auth

NullPointerExceptions非常普遍,因此我强烈建议您学习如何自己解决这些问题。为此,请查看:

  • 什么是 Kotlin 双爆炸 (!!) 运算符?
  • 不幸的是,MyApp已经停止了。我该如何解决这个问题?
  • 什么是 NullPointerException,如何修复它?
 类似资料:
  • 每次我尝试用Pycharm在GitHub中推送一个存储库时,它都会失败。 在Settings->Version Control->Git中,Git可执行文件的路径是用完整路径设置的,SSH可执行文件:Buil-in Win 7上的Pycharm版本3.1.1 Git版本1.8.4.msysgit.0。

  • “Git push origin MyBranchName”抛出错误“HTTP Basic:拒绝访问” 我在GitLab中配置了密码。 我有SSL密钥创建后,项目是在GitLab上。

  • 我一直很难找到Google Firebase身份验证背后的SLA。根据托管和实时数据库的服务水平协议,Firebase的每月正常运行时间百分比应至少达到99.95%。它是否适用于身份验证服务?

  • 我第一次将应用程序部署到数字海洋,遇到了两个(可能更多)问题。 1) 在将添加到Gemfile后,我无法。我发现kgio与windows不兼容。我必须要Gemfile吗。当我通过capistrano部署时是否存在锁?我如何解决这个问题? 2)我在服务器上的postgreql上遇到身份验证问题。 我运行了这些命令(以及其他一些命令): 每次我限制部署时,我都会收到这个错误: 我尝试输入一个我知道不存

  • 当我创建一个新用户,但它无法登录数据库时。 我这样做: 然后创建一个数据库: 之后,我尝试登录,但出现错误: 我试图解决这个问题,但失败了。

  • 我在Windows 10 Pro x64上使用GitLab Community Edition 9.1.3 2E4E522。使用Git客户端。