@Firebase检索数据的事件侦听器不起作用

时间:2017-08-31 13:37:47

标签: android firebase firebase-realtime-database addeventlistener

private FirebaseAuth firebaseAuth=FirebaseAuth.getInstance();;
private FirebaseUser firebaseUser=firebaseAuth.getCurrentUser();
/******************************After declaration**************************************/

    userIDDatabaseReference=FirebaseDatabase.getInstance().getReference("login");
    userIDDatabaseReference.child(firebaseUser.getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.w("Show out:", "In Firebase ValueEventListener");
       LoginClass tempClass=dataSnapshot.getValue(LoginClass.class);
            loginID=tempClass.getLoginID();
                 }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            System.out.println("Database Error: "+databaseError.getDetails());
        }
    });

enter image description here 上面是我的编码,我想检索loginID,但我的事件监听器没有触发,因为log.w没有在我的logcat中打印任何日志,我认为我的函数不会触发{{1}因为每次它都会为onDataChange()返回null。谁能告诉我我错过了什么?我提到了所有相关的文档,我真的不知道这里有什么问题。

谢谢~~

1 个答案:

答案 0 :(得分:0)

使用单值事件侦听器一次获取数据。使用此代码:

userIDDatabaseReference.child(firebaseUser.getUid()).addSingleValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Log.w("Show out:", "In Firebase ValueEventListener");
   LoginClass tempClass=dataSnapshot.getValue(LoginClass.class);
        loginID=tempClass.getLoginID();
             }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        System.out.println("Database Error: "+databaseError.getDetails());
    }
});