Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 布尔和Firebase数据库_Java_Android_Firebase_Firebase Realtime Database_Boolean - Fatal编程技术网

Java 布尔和Firebase数据库

Java 布尔和Firebase数据库,java,android,firebase,firebase-realtime-database,boolean,Java,Android,Firebase,Firebase Realtime Database,Boolean,我正在开发一个应用程序,它使用Firebase数据库来存储一些看起来与此类似的布尔值 "TEST" : { "TEST" : { "Current_job" : { "important_job" : true, "washed" : true }, "colour" : "test", "date" :

我正在开发一个应用程序,它使用Firebase数据库来存储一些看起来与此类似的布尔值

"TEST" : {
"TEST" : {
  "Current_job" : {
    "important_job" : true,
    "washed" : true
  },
  "colour" : "test",
  "date" : "test",
  "doors" : "test",
  "enginesize" : "test",
  "fuel" : "test",
  "lotnumber" : "test",
  "manufacturer" : "test",
  "model" : "test",
  "reg" : "TEST"
}
我使用应用程序中的复选框激活它们。勾选该复选框后,它会将布尔值true推送到我的数据库,而将false取消勾选

我想在另一个活动中调用这些布尔值,并以与使用共享首选项类似的方式使用它们

所以我从下面Frank的答案中复制,但我得到了一个空指针错误

  @Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot valueSnapshot: dataSnapshot.getChildren()){
        Boolean a,b,c,d;
        a = valueSnapshot.child("important_job").getValue(Boolean.class);
这就是空指针错误所在的位置

        if (a){
            CheckBox cb1 = (CheckBox)relativeLayout.findViewById(R.id.cbimportant);
            cb1.setChecked(true);
        }else{
            CheckBox cb1 = (CheckBox)relativeLayout.findViewById(R.id.cbimportant);
            cb1.setChecked(false);
        }
    }
}

数组是一种非常特殊的数据结构。例如,在JSON/Firebase中,您拥有的三个名称的数组将像这样存储:

["washed", "polished", "waxed"]
{
  "washed": true,
  "polished": false,
  "waxed": false
}
正如您可能注意到的,这意味着您丢失了布尔值。这是因为数组中的元素未命名

您显示的更有可能是所谓的关联映射,或者只是键值对。在JSON/Firebase中存储如下:

["washed", "polished", "waxed"]
{
  "washed": true,
  "polished": false,
  "waxed": false
}
无论哪种方式,如果显示实际的JSON(文本形式,无屏幕截图),都会更容易提供帮助。您可以通过单击页面中的“导出JSON”链接来实现这一点

如果希望从中同时获取键和值,请将侦听器附加到其上方的节点,并循环快照的子节点,如下所示:

Database currentJobRef = FirebaseDatabase.getInstance().getReference("CurrentJob");
currentJobRef.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot valueSnapshot: dataSnapshot.getChildren()) {
      System.out.println(valueSnapshot.getKey()); // prints "washed", "published", "waxed"
      System.out.println(valueSnapshot.getValue(Boolean.class)); prints true, false, false
    }
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    throw databaseError.toException();
  }
});

处理布尔值的工作原理与处理字符串和整数的工作原理完全相同。您确定您在这里实际使用的是阵列吗?这三个布尔值似乎不适合在一个数组中。当有一组布尔值时,它不是被称为数组吗?@Frank van Puffelen谢谢你的帮助朋友你能检查我的问题吗?我更新了代码cheerz@Peter哈达,为什么我的问题被搁置了?干杯朋友