java - 无法从 firebase 数据库中检索值

标签 java android firebase firebase-realtime-database

我正在尝试从我的 firebase 数据库中检索值。

它正在显示 onDataChange() 函数中的值,但无法显示其中的值。

代码:

public Records readtraditional(String email)
{
    final Records record = new Records();
    final String[] name = new String[1];

    myRef.child(email).child("name").addValueEventListener(new 
    ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            name[0] = dataSnapshot.getValue().toString() ;
        //Printing value of name here
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

    Log.i("name in ","H"+name[0]);
    //Unable to print value of name here
    record.setName(name[0]);
    return record;
}

最佳答案

正如我在评论中提到的,对 Firebase 的调用是异步的。如果您希望您的方法返回 Records 对象,您应该使用回调:

public void readtraditional(String email, MyCallback callback)
{
    final Records record = new Records();
    final String[] name = new String[1];

    myRef.child(email).child("name").addValueEventListener(new 
    ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            name[0] = dataSnapshot.getValue().toString() ;                
            record.setName(name[0]);
            callback.onSuccess(record)
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });   

}

接口(interface):

public interface MyCallback{
           void onSuccess(Records record)
}

你可以这样调用这个方法:

readtraditional(mystring,new MyCallback{
        @Override
        void onSuccess(Records record){
            //do whatever you want
        }
});

关于java - 无法从 firebase 数据库中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46647970/

相关文章:

java - 如何在不单独调用laod方法的情况下在java中加载属性文件

android - 以字符计数的计时器

reactjs - 无法正确更改 componentDidMount 中的状态

java - Spring Boot自定义登录页面显示404

java - AbstractMethodError:org.apache.bval.jsr303.ConfigurationImpl 缺少方法 getDefaultParameterNameProvider() 的定义

Java 学习层次结构

Android 共享元素返回过渡到上一个 Activity

android - 在 IntelliJ 9.0 Maia Public Beta 下构建 Android 应用时出现 "Resource not found"

ios - 自动完成文本字段和 Firebase

android - 如何在布局中显示 firebase 通知消息