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(); 
    } 
}