为什么在stament中使用addOnCompleteListener崩溃了

时间:2019-07-13 20:30:19

标签: android-studio kotlin

我编写了这段代码,其中如果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()

0 个答案:

没有答案