android - Firebase 加载数据 onCreate()

标签 android firebase firebase-realtime-database

我想在 oncreate() 上加载一个数据集。

由于数据不会改变,我使用一次性加载器:

protected void onCreate(Bundle savedInstanceState) {
    ....

    mDatabase.child("users").child(userId).addListenerForSingleValueEvent(
        new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                currentUser = dataSnapshot.getValue(Users.class);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.w(TAG, "error:", databaseError.toException());
            }
    });
    String name = currentUser.getName();
    ....
}

但是数据不可用,在空对象上调用了 getName 函数。

如何获取 onCreate() 的数据?

最佳答案

问题是 Firebase 使用异步监听器来引用数据库,并且您将 name 变量设置为 null currentUser

尝试将名称 var 声明为 final 并在监听器之前,并在 firebase 回调中设置他的值。

更新: 如何实现和使用“覆盖”功能的示例:

final String name;
mDatabase.child("users").child(userId).addListenerForSingleValueEvent(
new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            currentUser = dataSnapshot.getValue(Users.class);
            name = currentUser.getName();

            fooFunc(name); // calling a function with data
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.w(TAG, "error:", databaseError.toException());
        }
});

@Override
public void fooFunc(String name) {
    // name != null, when called from the the callback
    // dont forget to check it
}

关于android - Firebase 加载数据 onCreate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38028171/

相关文章:

android - 在回收站 View 上创建上下文菜单时 menuInfo 为 null

firebase - 在 Firebase 中构建关系

java - Firebase 存储错误尝试将数据插入我的数据库

typescript - Firebase @google-cloud/firestore 包 typescript 错误重复标识符 'DocumentData'

swift - Firebase 通知和 Firebase 数据库功能不能在我的应用程序中同时工作

android - 无法通过我的 GLSurfaceView 获取 AdView

android - 如何自定义和更改 android 中微调器的背景颜色?

android - 交互式 ussd session (多步)在 android 8(奥利奥)上不起作用

java - 我无法使用 FirebaseRecyclerAdapter 从 Firebase 数据库检索数据

android - 如何同步 Firebase 存储和数据库?