如果这是一个非常基本的问题,我很抱歉,但我无法解决这个问题。我正在尝试实现一个基于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...*/}