0

下面是我想要的火力數據庫火力地堡不增加一些價值

{[email protected], name=david ,photoUrl=https://i.stack.imgur.com/tHOLT.png} 

上載在登錄畫面我按照以註冊用戶下面的步驟中的數據:

  1. 與電子郵件創建用戶
  2. 登錄用戶
  3. 添加的用戶的信息

mAuth.createUserWithEmailAndPassword(binding.inputEmail.getText().toString(),binding.inputPwd.getText().toString()) 
        .addOnSuccessListener(new OnSuccessListener<AuthResult>() { 
         @Override 
         public void onSuccess(AuthResult authResult) { 
          mAuth.signInWithEmailAndPassword(binding.inputEmail.getText().toString(),binding.inputPwd.getText().toString()) 
            .addOnSuccessListener(new OnSuccessListener<AuthResult>() { 
             @Override 
             public void onSuccess(AuthResult authResult) { 
              storeuserdata(); 
             } 
            }) 
            .addOnFailureListener(new OnFailureListener() { 
             @Override 
             public void onFailure(@NonNull Exception e) { 
              hideProgressDialog(); 
              Toast.makeText(SignUpActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
             } 
            }); 
         } 
        }).addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(@NonNull Exception e) { 
          hideProgressDialog(); 
          Toast.makeText(SignUpActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
         } 
        }); 


    public void storeuserdata(){ 
    mUserRefrence.child(uid).setValue(postValues) 
         .addOnSuccessListener(new OnSuccessListener<Void>() { 
          @Override 
          public void onSuccess(Void aVoid) { 
           hideProgressDialog(); 
           Toast.makeText(SignUpActivity.this, getString(R.string.login_success), Toast.LENGTH_SHORT).show(); 

           finish(); 
          } 
         }).addOnFailureListener(new OnFailureListener() { 
        @Override 
        public void onFailure(@NonNull Exception e) { 
         hideProgressDialog(); 
         Toast.makeText(SignUpActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
        } 
       }); 
    } 

但是,當我看到它總是跳過photourl值與值name密鑰的數據庫。

users{ 
    Ul95OXiNhCM5ydpbdvWC5sfnykz2 
    email: "[email protected]" 
    photoUrl: ""} 

如果您遵守上述結果name鍵與價值缺失和photoUrl值也不翼而飛。

下面是postvalue數據

D/SignUpActivity: storeUserData() called postValues : {[email protected], name=david, photoUrl=https://i.stack.imgur.com/tHOLT.png} 

下面是模型類

class UserData { 

    private String name; 
    private String email; 
    private String photoUrl; 

    public UserData() { 

    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public void setPhotoUrl(String photoUrl) { 
     this.photoUrl = photoUrl; 
    } 

    public UserData(String name, String email, Uri photoUrl) { 
     this.name = name; 
     this.email = email; 
     this.photoUrl=photoUrl.toString(); 
    } 


    @Exclude 
    public Map<String, Object> toMap() { 
     HashMap<String, Object> result = new HashMap<>(); 
     result.put("name", name); 
     result.put("email", email); 
     result.put("photoUrl",photoUrl); 
     return result; 
    } 
} 
+0

請提供postValues可變數據 – Techierj

+0

{[email protected],名稱=大衛,photoUrl = HTTPS://i.stack.imgur.com/tHOLT.png} –

+0

我表明第一線,但你可能會缺少一些東西,你的模型班級是 班級模型{ 字符串電子郵件; String photoUrl; } – Techierj

回答

0

嘗試addOnCompleteListener代替addOnSuccessListener,

mUserRefrence.child(uid).setValue(postValues) 
        .addOnCompleteListener(new OnCompleteListener<Void>() { 
         @Override 
         public void onComplete(Void aVoid) { 
          hideProgressDialog(); 
          Toast.makeText(SignUpActivity.this, getString(R.string.login_success), Toast.LENGTH_SHORT).show(); 
          finish(); 
         } 
        }) 
      }); 

讓我知道如果這能幫助你。

+0

不起作用相同結果 –

+0

檢查一次而未完成活動。 – Priya

0

您正在創建新用戶createUserWithEmailAndPassword這是正確的沒有問題,但沒有必要signInWithEmailAndPassword因爲當你createUserWithEmailAndPassword這意味着你不需要再次認證用戶用戶已經登錄你的應用程序更好將AuthStateListener添加到您的FirebaseAuth而不是在onComplete方法中保存數據。

public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
    FirebaseUser user = firebaseAuth.getCurrentUser(); 
    if (user != null) { 

     storeuserdata(); 
    } 
}