尝试检索Firebase类Android

时间:2017-04-06 04:20:52

标签: android firebase firebase-realtime-database

我有一个模型类来存储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快照:

enter image description here

模特课:

//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");
}
}

2 个答案:

答案 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)

我希望这会对你有所帮助。感谢