Android Studio:java.lang.IllegalArgumentException:给定的String为空或null

时间:2018-07-18 10:33:50

标签: android error-handling kotlin

我目前正在做我的第一个项目,所以如果听起来像一个愚蠢的问题,我感到抱歉。

我遇到了一段代码问题,当您单击按钮时,该代码应尝试使用UI文本框中提供的电子邮件和密码来创建Firebase帐户。相反,每当我单击该按钮时,应用程序都会崩溃并显示错误:java.lang.IllegalArgumentException:给定的String为空或null。

代码:

    //Create new User
    var email = emailID.text.toString().trim()
    var pwd = passwordID.text.toString().trim()


    create_acc_button.setOnClickListener{

        mAuth!!.createUserWithEmailAndPassword(email, 
        pwd).addOnCompleteListener(this
        ) { task: Task<AuthResult> ->
            if (task.isSuccessful){
                var user:FirebaseUser = mAuth!!.currentUser!!
                Log.d("User", user.email.toString())
            }else{
                Log.d("Error:", task.toString())
            }
        }
    }

Logcat:

    java.lang.IllegalArgumentException: Given String is empty or null
        at com.google.android.gms.common.internal.zzbq.zzgm(Unknown Source:10)
        at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(Unknown Source:0)
        at com.example.david.mykotlinfirebaseintro.MainActivity$onCreate$1.onClick(MainActivity.kt:37)
        at android.view.View.performClick(View.java:6597)
        at android.view.View.performClickInternal(View.java:6574)
        at android.view.View.access$3100(View.java:778)
        at android.view.View$PerformClick.run(View.java:25885)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

2 个答案:

答案 0 :(得分:0)

带有条件的环绕代码单击按钮

if (email != null || !email.isEmpty()) {
     //your positive code
} else {
     //your negative code    
}

答案 1 :(得分:0)

以这种方式; email和pwd变量会在第一次启动时填充。您所做的更改不会影响变量。

您必须将此行移动到clicklistener中。

 //Create new User
var email = emailID.text.toString().trim()
var pwd = passwordID.text.toString().trim()