【发布时间】:2017-02-12 18:23:22
【问题描述】:
我创建了一个名为 Users 的节点。我想创建一个名为Uid 的子节点,该用户注册自己并将他/她的所有个人资料信息存储在该子节点中。
只有当用户成功注册到数据库时才会发生。所以我使用了以下代码:
mAuth.createUserWithEmailAndPassword(user.getEmail(), password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d("MainActivity", "signIn:onComplete:" + task.isSuccessful());
if (task.isSuccessful()) {
DatabaseReference userDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users");
userDatabaseReference.child(task.getResult().getUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(ResetPassword.this, "user registred to database", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(ResetPassword.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
} else {
Toast.makeText(ResetPassword.this, "Registration Failed",
Toast.LENGTH_SHORT).show();
}
}
});
但我的代码不起作用。用户注册成功,但数据库中没有创建子。应该使用用户的 Uid 名称创建。
当我添加断点时,如下所示:
我发现编译器在第 82 行之后直接进入第 106 行,中间没有执行任何行,但它仍然调用了在完成时调用的 MainActivity。
我不明白这是怎么回事。提前致谢。
【问题讨论】:
标签: android firebase firebase-realtime-database firebase-authentication