当我尝试登录以启动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)
你是对的。 getNumber()返回null。这可能意味着你要转换为Users对象的位置的数据库中没有任何值,但是由于你尚未在所读取的位置显示确切的数据,因此无法确定。你应在调用toString()结果之前进行检查。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。