我有一个模型类来存储Firebase用户信息。在模型类的内部,我有一个HashMap来存储所有数据。存储数据后,我将Hashmap推送到Firebase数据库。值存储正常,但我无法访问这些值。每次我尝试访问它们时,都会收到一条错误消息,说我正在尝试在空对象引用上调用虚方法。
mDatabase.child("users").child(mUserId).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot ChildSnapshot, String s) {
// These two lines of code give the error.
User author = ChildSnapshot.child("profile").getValue(User.class);
String author_username = author.getUsername();
这些给我错误。我试图从快照的子项中获取数据。为什么这会给我一个错误?有更好的方法吗?
JSON Firebase快照:
模特课:
//TODO model class for the user. This way I can set the values for each user. I will be adding more values in the future.
public class User {
public HashMap<String, String> hashMap = new HashMap<String,String>();
public User() {
}
public User(String username) {
hashMap.put("username",username);
}
public String getUsername(){
return hashMap.get("username");
}
}
答案 0 :(得分:0)
如果其他人正在努力解决这个问题,我想给出答案。在我的ChildEventListener中,配置文件是这种情况下的关键,因此当我使用ChildSnapshot.child("profile").getValue(User.class)
时,它返回一个空值。此外,(我不太清楚为什么会这样)用户名的值存储在另一个名为User_message的类中,该类用于存储消息。所以我更新的代码看起来像这样:
mDatabase.child("users").child(mUserId).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot ChildSnapshot, String s) {
User_message author = ChildSnapshot.getValue(User_message.class);
String author_username = author.getUsername();
答案 1 :(得分:0)
我遇到了同样的问题,花了5个多小时。我添加了模型的默认构造函数,这解决了我的问题。
print(Property.sharedInstance.propertyA)
print(Property.sharedInstance.propertyB)
print(Property.sharedInstance.propertyC)
print(Property.sharedInstance.propertyD)
print(Property.sharedInstance.propertyE)
我希望这会对你有所帮助。感谢