Java 无法从firebase数据库检索该值
我正在尝试从firebase数据库检索值 它正在onDataChange()函数中显示值,但无法显示其中的值 代码:Java 无法从firebase数据库检索该值,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在尝试从firebase数据库检索值 它正在onDataChange()函数中显示值,但无法显示其中的值 代码: 正如我在评论中提到的,对Firebase的调用是异步的。如果希望方法返回记录对象,则应使用回调: public void readtraditional(String email, MyCallback callback) { final Records record = new Records(); final String[] name = new Strin
正如我在评论中提到的,对Firebase的调用是异步的。如果希望方法返回
记录
对象,则应使用回调:
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) {
}
});
}
接口:
public interface MyCallback{
void onSuccess(Records record)
}
您可以这样调用此方法:
readtraditional(mystring,new MyCallback{
@Override
void onSuccess(Records record){
//do whatever you want
}
});
来自Firebase的响应是异步的。当您尝试打印OnDataChange之外的值时,可能并没有收到服务器的任何响应,并且您的名称数组仍然为空,并且正在调用OnDataChangelater@matip,我知道这一点,但解决办法是什么。请参阅下面我的答案
readtraditional(mystring,new MyCallback{
@Override
void onSuccess(Records record){
//do whatever you want
}
});