让孩子计算我的firebase数据库引用时出现问题。
我正在使用
private long childs;
这个变量在onCreate中设置如下:
ref_1 = new Firebase("https://xxxxxxxxxx-xxxxx.xxxxxxxxx.com/traning/crossfit/level"+condition);
ref_1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
childs = dataSnapshot.getChildrenCount();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
如果我在dataSnapshot上调试此代码,它已计算子项及其正确,但在文件中其他位置使用此全局变量子项时,会以某种方式设置为零。
答案 0 :(得分:0)
这种情况正在发生,因为onDataChange()
方法被称为异步。您不能简单地将childs
变量设为全局变量,并在课程中的任何位置使用它。发生这种情况是因为甚至在从数据库获取数据之前就调用了onDataChange()
方法。为了更好地理解,请参阅此post的答案。
要快速解决问题,只需使用childs
变量的值,只能在onDataChange()
方法内使用。