我编写了这段代码,其中如果addOnComplete不起作用是因为电子邮件输入已经存在,但是当我按下按钮时,应用程序关闭了
.addOnCompleteListener {
if (!it.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Log.d("register", "Successfully created with uid: ${it.result?.user?.uid}")
}else{
Toast.makeText(this, "the email already exists",Toast.LENGTH_SHORT).show()
}
val intent = Intent(this, Inicio::class.java)
startActivity(intent)
}
我期望if(正确)参加一个新活动,否则再次询问电子邮件,因为他们正在输入已经存在的电子邮件(注册页面)
当我按下按钮注册时,应用程序崩溃
.addOnCompleteListener {
if (!it.isSuccessful) return@addOnCompleteListener
// Sign in success, update UI with the signed-in user's information
Log.d("register", "Successfully created with uid: ${it.result?.user?.uid}")
val intent = Intent(this, Inicio::class.java)
startActivity(intent)
}
通过这种方式可以正常工作,但是我试图显示消息“电子邮件已经存在”,并使用它来崩溃
edit:经过一些测试,该代码可以正常工作并且不会崩溃或尚未崩溃,现在唯一的问题是,尽管程序转到了新页面,但消息“此电子邮件已经存在”出现了,尽管这不应该发生,因为如果(正确)陈述已经完成(移至新页面),firebase为空(我清除了所有已输入的电子邮件)
Edit2:尝试输入相同的电子邮件(我尝试使用if语句解决的问题导致应用崩溃
2019-07-13 23:40:33.252 27529-27529 / com.FestU E / Android运行时:致命异常:主要 进程:com.FestU,PID:27529 com.google.android.gms.tasks.RuntimeExecutionException:com.google.firebase.auth.FirebaseAuthUserCollisionException:该电子邮件地址已被另一个帐户使用。 在com.google.android.gms.tasks.zzu.getResult(未知来源) 在com.FestU.Register $ onCreate $ 1 $ 1.onComplete(Register.kt:42) com.google.android.gms.tasks.zzj.run(未知来源) 在android.os.Handler.handleCallback(Handler.java:751) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:154) 在android.app.ActivityThread.main(ActivityThread.java:6682) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 引起原因:com.google.firebase.auth.FirebaseAuthUserCollisionException:该电子邮件地址已被另一个帐户使用。 在com.google.firebase.auth.api.internal.zzdr.zzb(未知来源) 位于com.google.firebase.auth.api.internal.zzeu.zza(未知来源) 在com.google.firebase.auth.api.internal.zzen.zzc(未知来源) com.google.firebase.auth.api.internal.zzep.onFailure(未知来源) com.google.firebase.auth.api.internal.zzdx.dispatchTransaction(未知来源) com.google.android.gms.internal.firebase_auth.zza.onTransact上(未知来源) 在android.os.Binder.execTransact(Binder.java:573)
edit3:我想通了,而不是我用了
.addOnFailureListener {
Log.d("main", "Failed to create user: ${it.message}")
Toast.makeText(this, "El email ya existe o no es valido", Toast.LENGTH_SHORT).show()