将空的 EditText 转换为整数 Android Studio
Converting Empty EditText to Integer Android Studio
我有一个 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"
}
}
}
改用toIntOrNull()
。它不会在无效输入上抛出异常,而是 returns null。然后您可以使用 Elvis 运算符提供默认值,以便在它为 null 时使用。
val userAge = ageInput.text.toString().toIntOrNull() ?: 0
在使用 Kotlin 时,您应该避免像 Integer 这样的 Java 原始包装器 类。
我有一个 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"
}
}
}
改用toIntOrNull()
。它不会在无效输入上抛出异常,而是 returns null。然后您可以使用 Elvis 运算符提供默认值,以便在它为 null 时使用。
val userAge = ageInput.text.toString().toIntOrNull() ?: 0
在使用 Kotlin 时,您应该避免像 Integer 这样的 Java 原始包装器 类。