我使用Firebase编写了一个登录系统。我现在想做什么:
如果用户注册时遇到麻烦(例如,如果他尝试使用已注册的电子邮件登录),我想在警告消息中打印错误并将其重定向到注册页面。
为此,我在注册按钮中编写了如下代码。
// Sign Up Method
// Kullanıcı Kayıt etme metodu
public void signUp(View view) {
mAuth.createUserWithEmailAndPassword(emailText.getText().toString(),passwordText.getText().toString())
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(signupPage.this, "User Created", Toast.LENGTH_SHORT).show();
Intent homePage = new Intent(signupPage.this, ProfilePage.class);
startActivity(homePage);
finish();
}
}).addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
}).addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (mAuth.getCurrentUser() != null) {
Intent signBack = new Intent(signupPage.this, signupPage.class);
startActivity(signBack);
finish();
}
Toast.makeText(signupPage.this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
});
如果用户登录时出现问题,请执行显示错误消息。但是它不会重定向到注册页面。尽管显示错误,但用户将其重定向到主页,就好像它已成功注册一样。
如果您能帮助我,我将不胜感激。
对不起,我的英语不好。
答案 0 :(得分:1)
好吧,首先,您必须知道onComplete方法将始终被调用,因为onFailure仅在某些操作失败时才进行。因此,正如我在您的代码上看到的那样,该应用将始终在首页启动。
如何解决? 只需检查任务是否成功即可重定向到首页。
在onComplete方法中检查是否还可以,并使用以下命令执行代码:if(task.isSuccessful)...