当我需要将Firebase中的值分配给全局变量时,它始终为null。
String idban = "";
DatabaseReference likeRef = FirebaseDatabase.getInstance().getReference().child("Banners");
likeRef.orderByChild("name")
.equalTo(name)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren())
{
idban = childSnapshot.getKey();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Log.e("IDBAN",idban) // idban == "" when i call it;
有人可以帮我解决这个问题吗? 对不起,我的英语不好。
答案 0 :(得分:0)
addListenerForSingleValueEvent
在后台线程中运行。 在将值返回到全局String之前,必须执行Log语句。
这就是为什么它返回空值的原因。
而不是编写idban = childSnapshot.getKey();
,而是编写类似Updatevalue(childSnapshot.getKey());
的方法
然后将方法定义为
Private void Updatevalue (String key){
idban = key;
Log.e("IDBAN",idban)
}