0
假如我是從火力爲Android的火力得到datasnapshot串到外面
DatabaseReference mdb=FirebaseDatabase.getInstance().getReference("users/"+id);
mdb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name=dataSnapshot.child("name").getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//point b
其正常使用....獲取數據 如果我嘗試打印使用
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name=dataSnapshot.child("name").getValue();
System.out.println(name);
}
該字符串名稱
它將打印該字符串。 但如果我想在偵聽器之外的字符串名稱,如在第一個代碼中,我已經添加了一個註釋//點b
我試着在全局定義字符串名稱。 但它只打印在onDatachange()中的println ...但它將在//點b處打印null ...即使我全局定義了字符串名稱。
像
String name;
DatabaseReference mdb=FirebaseDatabase.getInstance().getReference("users/"+id);
mdb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
name=dataSnapshot.child("name").getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//point b
編輯 實際上它返回像
public String getData(String id)
{
String name;
DatabaseReference mdb=FirebaseDatabase.getInstance().getReference("users/"+id);
mdb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
name=dataSnapshot.child("name").getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return name;
}
其打印'null'值是異步 – akhilesh0707
手段?我不能在外面打印? –
您的打印代碼在Firebase聽衆返回值 – akhilesh0707