2017-08-31 54 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

好吧,我會試試這個,但我的問題是與事件監聽器有關? –