2017-02-18 90 views
0

我有一個ValueEventListener,並且永遠不會到達內部代碼。我的應用正在進行身份驗證,但我無法檢索數據,我不確定我錯過了什麼。在下面的代碼中,當我檢查時,uid具有正確的值,並且數據路徑(「Users/[uid]」)是正確的,但值事件偵聽器中的內部代碼永遠都不會到達。我也嘗試將一個偵聽器放在根上,結果相同。ValueEventListener永遠不會被輸入

我已經使用菜單選項設置Firebase,將認證和實時數據庫都添加到我的應用程序中;身份驗證工作正常,所以我想知道是否有其他東西需要配置爲實時數據庫?我已經閱讀了文檔,並通過了很多例子,但我看不到任何我想念的東西。

uid = FirebaseAuth.getInstance().getCurrentUser().getUid().toString(); 
    DatabaseReference userRef = ref.child("Users").child(uid).getRef(); 

    ValueEventListener userListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      User user = dataSnapshot.getValue(User.class); 
      if (user == null) { 
       SettingsLoad(); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.e("User", "User not found"); 
     } 
    }; 

    userRef.addListenerForSingleValueEvent(userListener); 
+0

請勿在'child()'之後調用'.getRef()'。這是不必要的,並會在某個時候導致問題(儘管這不是你目前問題的原因)。 Just:'DatabaseReference userRef = ref.child(「Users」)。child(uid);'。 –

回答

0

試試這個! 我剛剛添加了其他條件和日誌或吐司的結果!

uid = FirebaseAuth.getInstance().getCurrentUser().getUid().toString(); 
     DatabaseReference userRef = ref.child("Users").child(uid).getRef(); 

    ValueEventListener userListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      User user = dataSnapshot.getValue(User.class); 
      if (user == null) { 
       SettingsLoad(); 
      } 
**else { 
Log.d("tag","User Found!"); 
}** 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.e("User", "User not found"); 
     } 
    }; 

    userRef.addListenerForSingleValueEvent(userListener); 
相關問題