我在我的Android应用程序中使用Firebase。在我的注册方法中,我使用' createUserWithEmailAndPassword()'方法。检查我的注册过程是否成功我是否正在使用' isSuccessful'方法
firebaseAuth.createUserWithEmailAndPassword(m,p).addOnCompleteListener(new
OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
//some message
}
else
{
//some other message
}
};
但每次我尝试注册时,都会显示消息已成功。然后我会使用&#39; isComplete()&#39;而不是'成功&#39;然后它工作正常。我还检查了Firebase仪表板,以确保注册过程是否正常工作。 现在我想知道这两种方法之间是否有任何重大差异,如果我使用&#39; isComplete()&#39;是否会有任何进一步的问题,因为我已经检查了其他教程,其中是'成功()&#39;已经用过。 还有一件事,对于相同的代码来说,isComplete()&#39;正在返回true并创建用户但是'isSuccessful()&#39; ISN&#39;吨。 完整的代码:
public class RegisterActivity extends AppCompatActivity {
private EditText mail,pass,cPass;
private FirebaseAuth firebaseAuth;
private ImageButton reg;
private TextView warn;
private String a,b,c;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mail=(EditText) findViewById(R.id.email);
pass=(EditText) findViewById(R.id.pass);
cPass=(EditText) findViewById(R.id.Cpass);
reg=(ImageButton) findViewById(R.id.reg);
firebaseAuth=FirebaseAuth.getInstance();
progressDialog=new ProgressDialog(this);
warn=(TextView) findViewById(R.id.warnTv);
warn.setText("");
reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
a=mail.getText().toString().trim();
b=pass.getText().toString().trim();
c=cPass.getText().toString().trim();
if(a.isEmpty() || b.isEmpty() || c.isEmpty())
{
Toast.makeText(getApplicationContext(),"all the fields are mandatory",Toast.LENGTH_SHORT).show();
}
else
{
if(LoginActivity.validate(a))
{
if(b.equals(c))
{
progressDialog.setMessage("Wait a sec");
progressDialog.show();
firebaseAuth.createUserWithEmailAndPassword(a,b).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
progressDialog.dismiss();
Toast.makeText(getApplicationContext(),"Registration successful",Toast.LENGTH_SHORT).show();
startActivity(new Intent(RegisterActivity.this,LoginActivity.class));
finish();
}
else
{
progressDialog.dismiss();
Toast.makeText(getApplicationContext(),"Something went wrong",Toast.LENGTH_SHORT).show();
}
}
});
}
else {
warn.setText("Passwords in both the field must be same");
}
}
else
{
warn.setText("Enter a valid emailId");
}
}
}
});
请帮我解答。谢谢。
答案 0 :(得分:8)
任务已完成&#34;当任务代表的工作完成时,无论其成功与否。可能有也可能没有错误,你必须检查一下。
任务是'#34;成功&#34;当任务所代表的工作按预期完成时,没有任何错误。
答案 1 :(得分:1)
isComplete()
如果任务完成,则返回true;否则就是假的。
isSuccessful()
如果Task已成功完成,则返回true;否则就是假的。
答案 2 :(得分:0)
从Google Play服务9.0.0版开始,您可以使用 Task API 和许多返回Task的方法,例如fusedLocationProviderClient.lastLocation。 Task是代表异步方法调用的API,类似于先前版本的Google Play服务中的PendingResult。
处理任务结果
要在任务成功时收到通知,请附加 OnSuccessListener
task.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
// Task completed successfully
// ...
}});
要在任务失败时收到通知,请附加 OnFailureListener :
task.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
要在同一侦听器中处理成功和失败,请附加OnCompleteListener:
task.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Task completed successfully
AuthResult result = task.getResult();
} else {
// Task failed with an exception
Exception exception = task.getException();
}
}
});