getChildrenCount的Firebase数据快照设置为零

时间:2017-12-30 00:37:12

标签: java firebase firebase-realtime-database

让孩子计算我的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上调试此代码,它已计算子项及其正确,但在文件中其他位置使用此全局变量子项时,会以某种方式设置为零。

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为onDataChange()方法被称为异步。您不能简单地将childs变量设为全局变量,并在课程中的任何位置使用它。发生这种情况是因为甚至在从数据库获取数据之前就调用了onDataChange()方法。为了更好地理解,请参阅此post的答案。

要快速解决问题,只需使用childs变量的值,只能在onDataChange()方法内使用。