当我将项目添加到FirebaseDatabase中时,就像这样
String key = mDairyDataBase.push().getKey();
HashMap<String, String> dataMap = new HashMap<>();
dataMap.put("Name", item);
dataMap.put("Key", key);
mDairyDataBase.child(key).setValue(dataMap);
mDairyDataBase.child(key).child("IsSelected").setValue(false);
它崩溃我的应用程序并说错误就在这里
HashMap<String, String> value = (HashMap<String, String>) dataSnapshot.getValue();
if(value != null){
String name = value.get("Name");
String key = value.get("Key");
boolean isSelected = (Boolean) dataSnapshot.child("IsSelected").getValue();
mModelList.add(new Model(name, key, isSelected));
}
但我似乎无法弄明白为什么。它在这里给我一个空指针异常警告(Boolean) dataSnapshot.child("IsSelected").getValue();
但是当我的应用程序再次启动时,会添加项目,而在数据库中,我的值的布尔值为false。我通常会为这些警告编写一个if语句,但我似乎无法弄清楚如何为此编写它。
答案 0 :(得分:1)
使用该代码,您将检查响应中是否存在对象,而不是检查对象是否具有值IsSelected。 使用此代码:
HashMap<String, String> value = (HashMap<String, String>) dataSnapshot.getValue();
if(value != null){
String name = value.get("Name");
String key = value.get("Key");
if(dataSnapshot.hasChild("IsSelected")){
boolean isSelected = (Boolean) dataSnapshot.child("IsSelected").getValue();
}
mModelList.add(new Model(name, key, isSelected));
}