Firebase:无法将java.lang.Boolean类型的值转换为String

时间:2017-09-30 13:57:06

标签: java android firebase firebase-realtime-database

您正在尝试在我的数据库中检查false的布尔值,但是我收到的错误是将java.lang.Boolean类型的值转换为String失败。

Structure of DB

   Query q = databaseReference.child("Chatmessages").child(currentChatUser).child(userId);
      ValueEventListener eventListener = new ValueEventListener() {
          @Override
          public void onDataChange(DataSnapshot dataSnapshot) {
              String true3 = "true";
              for(DataSnapshot ds : dataSnapshot.getChildren()) {


                  if(ds.child("read").getValue(String.class).equals(false)){
                      ds.child("read").getRef().setValue(true);
                  }
              }
          }
          @Override
          public void onCancelled(DatabaseError databaseError) {}
      };
      q.addListenerForSingleValueEvent(eventListener);

2 个答案:

答案 0 :(得分:1)

您的比较错误:


gsutil rewrite -k -O gs://ywz-tmp/bigfile.txt

您所阅读的ArrayList<Double> list = new ArrayList(); list.add(parseDouble("7.01")); list.add(parseDouble("12.01")); list.add(parseDouble("9.00")); list.add(parseDouble("8.1")); 值无法与ds.child("read").getValue(String.class).equals(false) String保持一致。

要么进行字符串到字符串比较:

Boolean

首先将字符串转换为布尔值,然后比较:

false

答案 1 :(得分:0)

您的比较应该有效,但您有&#34; true&#34;值作为数据库中的字符串,Firebase支持使用布尔值作为节点的值,因此这应该是您的第一个修复。为此,只需删除数据库中"值周围的true,您就可以在Web控制台中对其进行编辑。确保在创建数据时创建为boolean primitive数据类型而不是String。

你的if条件应该是:

if (!ds.child("read").getValue(Boolean.class)){
    //work here
}

在上述情况下,使用否定!来说:如果与true相反,那么......