android - 无法从 Firebase 数据库中检索数据字段

标签 android firebase firebase-realtime-database

在过去的 5 天里,我一直在尝试从我的 firebase 数据库中检索数据字段,但没有成功。这是我的数据库的样子:

enter image description here

获取数据的代码:

private void alterTextView(final String id) {
        if(id!=null) {
        mDatabase.child("Users").child(id).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                UserInformation userInformation = dataSnapshot.getValue(UserInformation.class);
                String name = (String) userInformation.getName();


                Log.d("Main Activity",name);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
        mWelcomeUserMessage.setText("Welcome, "+name); 

    }
}`

我不知道为什么名称为“null”(请参阅​​日志)。 谁能告诉我我做错了什么?

PS:我在我的 UserInformation.java 类中定义了一个空白的默认构造函数、getter 和 setter。

此外,mDatabase 初始化如下: mDatabase = FirebaseDatabase.getInstance().getReference();

最佳答案

dataSnapshot.getValue(Class) 只会加载和设置值到公共(public)字段。我看到您已经有了默认构造函数。

公开 UserInformation 类中的名称字段。还要确保调用 getValue 的快照是 UserInformation 类的有效 JSON 表示形式,并且具有完全相同的“名称”字段(它必须与类中的名称字段完全匹配)。

请注意: addValueEventListener 添加一个监听器,当数据可用时将调用该监听器。

请注意,调用 onDataChange 后数据可用。这就是为什么您应该在从 DataSnapshot 获取所需数据后立即设置文本的原因。像那样:

private void alterTextView(final String id) {
            if(id!=null) {
            mDatabase.child("Users").child(id).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    UserInformation userInformation = dataSnapshot.getValue(UserInformation.class);
                    String name = (String) userInformation.getName();
                    Log.d("Main Activity",name);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run(){
                            mWelcomeUserMessage.setText("Welcome, "+name); 
                        }
                    });
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

        }
    }

关于android - 无法从 Firebase 数据库中检索数据字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389278/

相关文章:

android - 无法解析 getAssets() 方法

java - 在正确的时间启动具有 Intent 过滤器的 Activity

android - 我怎样才能控制android中的动画速度

javascript - Firebase - 同一节点中的不同监听器

android - 如何将MySQL数据发送到fire-base数据库?

javascript - 无法将函数部署到 firebase,因为 "admin.databse is not a function"

ios - 如何获取在 firebase 中添加子项时创建的唯一 key ?

android - Android 中 LaunchModes 的实际用例是什么?

ios - Firebase 快照中未显示的数据是否安全?

firebase - `firebase.functions().httpsCallable` 如何向 `functions.https.onCall` 提交文件?