1
我想從我的火力地堡數據庫 得到的數據我有兩個片段,一個用於註冊,另一個用於在 簽署我有一個將數據插入到火力地堡沒有問題,但不知何故,我」米無法從它onDataChange的值返回null
這些都是從我籤一些代碼片段中返回數據:
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
我裏面onCreate
方法驗證碼:
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
user = firebaseAuth.getCurrentUser();
if(user != null)
{
getExistingUserInfo(user.getUid());
}
};
這是我從我的firebase
public void getExistingUserInfo(String uid){
final FirebaseDatabase database = FirebaseDatabase.getInstance();
database.getReference("allUsers").child(uid)
.orderByChild("emailAddress")
.equalTo(mEmailStr)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.e("Data Changed YEA!",dataSnapshot.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
問題是,當我啓動應用程序和getExistingUserInfo
被稱爲內onCreate
,則返回最後在用戶簽名的數據query
的數據的方法我的設備正確
> E/Data Changed YEA!: DataSnapshot { key =
> vWOypZ07sbeQKEtXnAwbEEV7ml43, value = {password=123456789,
> username=ahmed, sgl=true, [email protected],
> studyGroupName=Study Group 2} }
但是當我按下登錄,它的值返回空
E/Data Changed YEA!: DataSnapshot { key = vWOypZ07sbeQKEtXnAwbEEV7ml43, value = null }
所以我必須關閉應用程序並重新打開它才能正確獲取數據!
的是用戶獲取簽署了代碼,這是一個clickListener
裏面onCreateView
方法:
mAuth.signInWithEmailAndPassword(mEmailStr, mPasswordStr).addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(Task<AuthResult> task) {
if (task.isSuccessful())
{
Toast.makeText(getContext(),"Succeed!",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getContext(),"Failed!",Toast.LENGTH_LONG).show();
}
}
});
這該是多麼我database
樣子:
將一個調試'Log'語句添加到'getExistingUserInf o()'顯示'uid'和'mEmailStr'的值。其中一個或兩個可能不是正確的值。 –
問題是,getExistingUserInfo()被多次自動調用,不知道爲什麼,一旦應用程序啓動時第一次被調用幾次,然後一旦我按下登錄,它就會再次被調用,這正是它看起來的樣子像在我的日誌中 http://image.prntscr.com/image/34be85f976b8457384bab7347344c5c0.png –
@Frank,你能幫我嗎? –