开发者社区> 问答> 正文

Firebase尝试在空对象引用上调用虚拟方法'boolean ja

当我尝试登录以启动HomeActivity时,即使我仔细检查了用户中的Getters和Setters,我仍然会收到此错误。我认为这可能与下面提到的这段代码有关。它显示.getNumber可能会产生NullPointerException。

if(usersData.getNumber().equals(number)){ 这是我的LoginActivity的一部分

        if(dataSnapshot.child(parentDbName).child(number).exists())
        {
            Users usersData = dataSnapshot.child(parentDbName)
                    .child(number).getValue(Users.class);

            if(usersData.getNumber().equals(number))
            {
                    if(usersData.getPw().equals(pw))
                    {
                    Toast.makeText(Login.this, "Logged In Successfuly!", Toast.LENGTH_SHORT).show();
                    prog1.dismiss();

每次我尝试使用Firebase中存储的现有帐户登录时,都会显示

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference 这是我在Users.java中生成的

package com.robihidquicaygabinvalencia.ecommerce.shopmore.Model;

public class Users { private String name, number, pw;

public Users()
{

}

public Users(String name, String number, String pw) {
    this.name = name;
    this.number = number;
    this.pw = pw;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getNumber() {
    return number;
}

public void setNumber(String number) {
    this.number = number;
}

public String getPw() {
    return pw;
}

public void setPw(String pw) {
    this.pw = pw;
}

} 这就是我在Logcat中获得的东西。

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at com.robihidquicaygabinvalencia.ecommerce.shopmore.Login$2.onDataChange(Login.java:83) at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@19.1.0:179) at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.1.0:75) at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.1.0:63) at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.1.0:55) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6682) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

展开
收起
小六码奴 2019-10-12 18:17:46 4861 0
1 条回答
写回答
取消 提交回答
  • 你是对的。 getNumber()返回null。这可能意味着你要转换为Users对象的位置的数据库中没有任何值,但是由于你尚未在所读取的位置显示确切的数据,因此无法确定。你应在调用toString()结果之前进行检查。

    2019-10-12 18:18:51
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载