致命异常:java.lang.NullPointerException - 尝试在空对象上调用虚方法'boolean java.lang.String.equals(java.lang.Object)'

问题描述 投票:0回答:1

我正在尝试使用 Google Firebase 和 Android Studio 创建登录和注册应用程序。

错误:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
       at com.example.cmp6213_2.Login$3.onDataChange(Login.java:79)
       at com.google.firebase.database.Query$1.onDataChange(Query.java:191)
       at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
       at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
       at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
       at android.os.Handler.handleCallback(Handler.java:942)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:201)
       at android.os.Looper.loop(Looper.java:288)
       at android.app.ActivityThread.main(ActivityThread.java:7872)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

LoginActivity.java

    public void checkUser(){
        String userEmail = loginUsername.getText().toString().trim();
        String userId = userEmail.substring(0, 4);
        String userPassword = loginPassword.getText().toString().trim();
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("users");
        Query checkUserDatabase = reference.orderByChild("email").equalTo(userEmail);
        checkUserDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if (snapshot.exists()){
                    loginUsername.setError(null);
                    String passwordFromDB = snapshot.child(userId).child("password").getValue(String.class);
                    if (passwordFromDB.equals(userPassword)) {
                        loginUsername.setError(null);
                        Intent intent = new Intent(Login.this, MainActivity.class);
                        startActivity(intent);
                    } else {
                        loginPassword.setError("Invalid");
                        loginPassword.requestFocus();
                    }
                } else {
                    loginUsername.setError("User does not exist");
                    loginUsername.requestFocus();
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            }
        });

感谢您的帮助,感谢您的宝贵时间。

我不知道问题出在哪里以及如何解决它,我将不胜感激任何可以帮助我指导我找到罪魁祸首的人。

java firebase nullpointerexception
1个回答
0
投票

控制台错误说变量

passwordFromDB
null
.

请检查变量是否不是

null
.

if (passwordFromDB.equals(userPassword)) {
     loginUsername.setError(null);
     Intent intent = new Intent(Login.this, MainActivity.class);
     startActivity(intent);
    }
 else {
    loginPassword.setError("Invalid");
    loginPassword.requestFocus();
 }

希望这对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.