【问题标题】:Android Studio: java.lang.IllegalArgumentException: Given String is empty or nullAndroid Studio:java.lang.IllegalArgumentException:给定字符串为空或为空
【发布时间】:2018-07-18 10:33:50
【问题描述】:

我目前正在处理我的第一个项目,如果这听起来像是一个愚蠢的问题,我很抱歉。

我在处理一段代码时遇到了问题,该代码应在您单击按钮时尝试使用 UI 文本框中提供的电子邮件和密码创建 Firebase 帐户。相反,每当我单击该按钮时,应用程序就会崩溃并显示以下错误:java.lang.IllegalArgumentException: Given String is empty or 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)

【问题讨论】:

    标签: android error-handling kotlin


    【解决方案1】:

    这样; email 和 pwd 变量在第一次启动时填充。您的更改不会影响变量。

    您必须将此行移到 clicklistener 中。

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

    【讨论】:

    • 效果很好。谢谢!那么问题是文本在变化,但是变量更新太晚了?
    • 没错!这样,当用户单击按钮时,您就会收到文本。
    【解决方案2】:

    在按钮点击中带有条件的环绕代码

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2015-06-05
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多