无法从Firebase检索布尔值



如果这是一个非常基本的问题,我很抱歉,但我无法解决这个问题。我正在尝试实现一个基于Firebase数据库中布尔值的if语句。我尝试过各种组合,但我最近的尝试如下。

当我使用以下代码运行应用程序时:

  • 什么都没发生
  • 没有错误消息
  • ";likeButtonNotClicked";按钮显示(对于真和假条件(
RetreiveLikeReference = FirebaseDatabase.getInstance().getReference().child("Main Wall Posts").child(postId).child("liked")
private void UpdateLike() {
if(RetreiveLikeReference.equals(true)){
likeButtonClicked.setVisibility(VISIBLE);
likeButtonNotClicked.setVisibility(GONE);
} else {
likeButtonClicked.setVisibility(GONE);
likeButtonNotClicked.setVisibility(VISIBLE);
}
} 

我也尝试了下面的代码,得到了相同的结果。

RetreiveLikeReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
snapshot.getValue();
if (snapshot.equals(true)){
likeButtonClicked.setVisibility(VISIBLE);
likeButtonNotClicked.setVisibility(GONE);
} else {
likeButtonClicked.setVisibility(GONE);
likeButtonNotClicked.setVisibility(VISIBLE);

}

} 
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});

尝试使用Boolean.valueOf()方法从数据库中获取布尔值。你没有告诉java你得到的值的类型,所以java会自动将值的类型设置为Object

您可以通过告诉java值类型是Boolean来修复它,如下所示:

if ((Boolean.valueOf(snapshot.getValue()))) {/* You code here...*/}

相关内容

  • 没有找到相关文章

最新更新