将Firebase中的值分配给全局变量

时间:2019-04-22 05:17:04

标签: android firebase

当我需要将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;

有人可以帮我解决这个问题吗? 对不起,我的英语不好。

1 个答案:

答案 0 :(得分:0)

addListenerForSingleValueEvent 

在后台线程中运行。 在将值返回到全局String之前,必须执行Log语句。

这就是为什么它返回空值的原因。

而不是编写idban = childSnapshot.getKey(); ,而是编写类似Updatevalue(childSnapshot.getKey());的方法 然后将方法定义为

Private void Updatevalue (String key){
idban = key;
Log.e("IDBAN",idban)
}