2017-07-12 109 views
0

Database looks like this:從onDataChange獲取值?

我試圖通過用戶名來獲得郵件,到目前爲止,我想:

通過MainActivity類中定義字符串變量和onDataChange功能使用storageContainer功能的storageContainer方式。

public void storageContainer(String mail){ 
    this.userMail = mail; 
} 

這是getMailByUsername功能:

public void getMailByUsername(String username){ 
    String user_mail; 
    mDatabase.child("Users").child(username).child("email").addListenerForSingleValueEvent(new ValueEventListener() { 
     String userMail; 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      userMail = dataSnapshot.getValue().toString(); 
      storageContainer(userMail); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

} 
+0

你的問題到底是什麼? –

+0

Im試圖從onDataChange函數獲取dataSnapshot.getValue()。toString():/但我想我不能...即時通訊嘗試從該數據庫獲取用戶郵件並在logIn中使用它(String email,String password )功能 –

回答

4

爲了解決這個問題,移動的String user_mail聲明的onDataChange()方法裏面,否則會爲空。這是由於onDataChange()方法的異步行爲而發生的,在調用storageContainer()之前調用該方法。

移動方法內的聲明,解決你的問題。還使用了日誌語句這樣的方法中:如果你想使用該方法之外的字符串的值

Log("TAG", userMail); 

,請看一看這個post我的答案。

希望它有幫助。