【问题标题】:Converting Empty EditText to Integer Android Studio [duplicate]将空 EditText 转换为整数 Android Studio [重复]
【发布时间】:2021-06-12 19:36:12
【问题描述】:

我有一个 EditText,它将从用户那里获取一个数字并将其保存为 sharedPreferences。我有两个按钮来加载和保存,还有一个 TextView 来显示保存的数据。一切正常,但如果用户不输入任何内容并保存,应用程序就会崩溃。这是 Kotlin 代码,

override fun onClick(p0: View?) {

    val sharedPreferences=getSharedPreferences("key", Context.MODE_PRIVATE)

    when(p0!!.id){


        //saves user data
         R.id.btn_save->{          
            
            val userAge = Integer.parseInt(ageInput.text.toString()) //the problem is here
            
            val editor=sharedPreferences.edit()
            editor.putInt("age",userAge)
            editor.apply()

        }

        //loads or displays user data
        R.id.btn_load->{

            val age=sharedPreferences.getInt("age",0)
            showTv.text="Age: $age"

        }
    }

}

【问题讨论】:

    标签: android android-studio kotlin null


    【解决方案1】:

    请改用toIntOrNull()。它不会在无效输入上引发异常,而是返回 null。然后,您可以使用 Elvis 运算符提供默认值,以便在它为 null 时使用。

    val userAge = ageInput.text.toString().toIntOrNull() ?: 0
    

    在使用 Kotlin 时,应避免使用 Integer 等 Java 原始包装类。

    【讨论】:

    • 感谢它的帮助。只需要做一点编辑,val userAge=ageInput.text.toString().toIntOrNull() ?: 0
    • 哦,是的,对不起。这是因为 TextView.text 返回的是 CharSequence 而不是 String。
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2017-04-27
    相关资源
    最近更新 更多