Почему мой логический исключение исключения нулевого указателя, когда я добавляю элементы в FirebaseDatabase? - PullRequest
0 голосов
/ 13 мая 2018

Когда я добавляю элементы в базу данных 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 голосов
/ 14 мая 2018

С этим кодом вы проверяете, есть ли объект в ответе, вы не проверяете, имеет ли объект значение 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));

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...