无法读取Firebase数据库

时间:2017-01-22 22:50:26

标签: android firebase firebase-realtime-database

这是我阅读Firebase数据的代码:

final String[] booknum = {"0"};
    databaseReference.child("All BID").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            booknum[0] =Long.toString(snapshot.getChildrenCount());
            Toast.makeText(getApplicationContext(), booknum[0],Toast.LENGTH_LONG).show();

        }
        @Override public void onCancelled(DatabaseError databaseError) {
            Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        }
    });
    Toast.makeText(getApplicationContext(), booknum[0],Toast.LENGTH_LONG).show();

当我执行此操作时,第一个toast(在ValueEventListener内)打印正确答案(例如' 8')。但无论如何,外面的吐司总是打印0。

请帮助!

1 个答案:

答案 0 :(得分:0)

ValueEventListener是异步的。监听器内部的代码行(包括booknum [0]的赋值)不能保证在写入侦听器外部的代码行之前执行。如果您依赖于booknum [0]的新值进行某些操作,请考虑在onDataChange()中移动该操作以确保它使用新值。