【发布时间】:2017-02-09 14:08:54
【问题描述】:
我试图返回一个布尔值,但返回的值始终为 false,在这种情况下为 0。
check 变量是一个实例变量,按下按钮时会调用下面的函数。
private boolean checkAnswerSubmission() {
DatabaseReference answerDatabase = FirebaseDatabase.getInstance().getReference().child("userPuzzleHistory").child(uid);
answerDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild(String.valueOf(imagename))) {
check = 1;
} else {
check = 0;
}
//here the value check is working fine but the value cannot be returned from here.
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//here the value returned is always 0
if (check == 1)
return true;
else
return false;
}
【问题讨论】:
-
Java 没有全局变量。
-
我的错。已经做出改变..任何帮助都会很棒@shmosel
-
创建你的静态变量。
-
数据库引用不是在与运行您的函数的线程相同的线程上完成的。它只是为异步调用添加了一个侦听器,该侦听器仅在从服务器接收到数据时才调用。所以你应该把所有你需要的函数调用都放在监听器里面。
标签: android firebase firebase-realtime-database