为什么在向FirebaseDatabase中添加项目时,我的Boolean throw null指针异常?

时间:2018-05-13 20:17:26

标签: android firebase firebase-realtime-database

当我将项目添加到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语句,但我似乎无法弄清楚如何为此编写它。

1 个答案:

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

        }