【发布时间】:2018-03-25 21:58:08
【问题描述】:
我在从 firebase DB 读取数据时遇到错误,我正在尝试允许使用 MAC 地址登录:
错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
数据:
这是我的代码:
DatabaseReference users = FirebaseDatabase.getInstance().getReference("users");
Query query = users.orderByChild("macAddress").equalTo(getMacAddr());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
User user = dataSnapshot.getValue(User.class);
if(!(user.getEmail().equals(edtEmail.getText().toString()))){
Snackbar.make(rootLayout, "Please Login With Phone You Registered With", Snackbar.LENGTH_SHORT).show();
waitingdialog.dismiss();
return;
}
}
else{
Snackbar.make(rootLayout, "Please Login With Phone You Registered With", Snackbar.LENGTH_SHORT).show();
waitingdialog.dismiss();
return;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
getMacAddr() 是一个以字符串形式返回设备mac地址的函数
上面代码中使用的User.class代码:
public class User {
private String email,password,name,phone,macAddress;
private int isSecured;
public User(String email, String name, String password,String phone,String macAddress,int isSecured){
this.email=email;
this.name=name;
this.password=password;
this.phone=phone;
this.macAddress=macAddress;
this.isSecured=isSecured;
}
public User() {}
public int getIsSecured() {
return isSecured;
}
public void setIsSecured(int isSecured) {
this.isSecured = isSecured;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMacAddress() {
return macAddress;
}
public void setMacAddress(String macAddress) {
this.macAddress = macAddress;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
这是用于创建用户对象的 User.class
【问题讨论】:
-
请也提供您的 User.class 代码
-
@JagarYousef 完成
-
尝试包含一个 if 语句
if(user.getEmail() != null)但有时当某处存在不合逻辑的代码时,Firebase 中会发生此空异常,不幸的是,我在您的代码中没有看到它。 -
只是为了好玩 - 在用户中的 null 构造函数中,将“电子邮件”字段设置为“我从未设置过”并将电子邮件添加到您的快餐栏消息中。似乎您没有收到电子邮件字段。
-
这是错字吗:
edtEmail.getText()???
标签: java android database firebase