2017-08-31 55 views
-1
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的打印任何日志,我认为我的函数不会触发onDataChange(),因为它每次都会返回空值为loginID。有人能告诉我我错过了什么吗?我提到所有相关的文档,我真的不知道这里有什么问题。@Firebase的事件侦听器检索数据不起作用

谢谢~~

+0

为什么你的userIDDatabaseReference指向“登录”? –

+0

@AmineHarbaoui,ops,我的错,我想从login节点检索loginID,请参考下面的图片 –

+0

检查uid是否相同,并检查onDataChange函数是否被调用? –

回答

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()); 
    } 
}); 
+0

好吧,我会试试这个,但我的问题是与事件监听器有关? –