我正在try 使用Firebase数据库.我得到了数据存储部分,但我无法从数据库中检索数据并将其存储在模型类中.模型类如下:
package com.joy.chat_two_point_o.models;
public class Users {
private String uid,name,phoneNumber,profileImage,email,password;
public Users(String uid, String name, String phoneNumber, String profileImage, String email, String password) {
this.uid = uid;
this.name = name;
this.phoneNumber = phoneNumber;
this.profileImage = profileImage;
this.email = email;
this.password = password;
}
public Users(String email, String password, String uid) {
this.email = email;
this.password = password;
this.uid = uid;
}
public Users(String name, String profileImage) {
this.name = name;
this.profileImage = profileImage;
}
public Users(String uid, String name, String phoneNumber, String profileImage) {
this.uid = uid;
this.name = name;
this.phoneNumber = phoneNumber;
this.profileImage = profileImage;
}
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 Users() {}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getProfileImage() {
return profileImage;
}
public void setProfileImage(String profileImage) {
this.profileImage = profileImage;
}
}
我想从数据库中检索数据并将其存储在这个类中,以便以后可以使用它,并且不需要反复调用数据库,因为我只需要单个 node 的数据.
我写的代码-
FirebaseDatabase.getInstance().getReference().child("users").child(FirebaseAuth.getInstance().getUid())
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
u = snapshot.getValue(Users.class);
Toast.makeText(ProfileActivity.this, u.getName(), Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
binding.name.setText(u.getName());
这里,第一个祝wine 词起作用了,这意味着它显示了我想要的数据.但每当我在其他地方使用它时,如文本视图(名称),它就不起作用,并给我这个错误-
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.joy.chat_two_point_o.models.Users.getName()' on a null object
个
我知道不知何故,User类的getter给出了一个空值,但它最初是如何工作的呢?为什么它不能在onDataChange函数之外工作?有没有人能解释一下?我试图观看一些视频,但它们使用的是get()方法,而不是这种"User Class"方法.我读了文档,也做了同样的事情,但它仍然不起作用.请告诉我我做错了什么?