当前位置: 首页 > 知识库问答 >
问题:

将空EditText转换为整数Android Studio

岳阳飙
2023-03-14

我有一个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"

        }
    }

}

共有1个答案

童华池
2023-03-14

改用ToIntorNull()。它不是在无效输入上抛出异常,而是返回NULL。然后您可以使用Elvis操作符来提供当它为NULL时使用的默认值。

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

您应该在使用Kotlin时避免像Integer这样的Java原语包装器类。

 类似资料:
  • 问题内容: 有什么方法可以将null转换为Integer。null实际上是一个字符串,我在我的服务层中传递该字符串,将其接受为整数。因此,每当我尝试将null字符串强制转换为Integer时,都会引发异常。但是我必须将null转换为Integer。 问题答案: 您 不能 从String强制转换为Integer。但是,如果您尝试将字符串转换为整数,并且必须提供处理字符串的实现,请查看以下代码片段:

  • 问题内容: 我需要使用反射获取字段的值。碰巧我并不总是确定该字段的数据类型是什么。为此,为了避免某些代码重复,我创建了以下方法: 并使用如下方法: 要么 问题是我似乎无法转换为: 有没有更好的方法来实现这一目标? 我正在使用Java 1.6。 问题答案: 不,即使可以从转换为,也无法转换为。对于已知为数字的 单个 值,并且想要获得长整型值,可以使用: 对于数组,这将比较棘手…

  • 问题内容: 我有Hibernate方法,它返回给我一个BigDecimal。我有另一个API方法,我需要将该数字传递给它,但是它接受Integer作为参数。我不能更改两种方法的返回类型或变量类型。 现在如何将BigDecimal转换为Integer并将其传递给第二种方法? 有没有解决的办法? 问题答案: 您将致电(或仅致电),如果您丢失了信息,它甚至会引发异常。返回一个int,但是自动装箱可以解决

  • 我想将时间间隔配置存储到数据库中,如下所示: 但是我不知道如何将例如值转换为LocalDateTime,因为我想使用此值来计算SQL查询的时间间隔。 将此值转换为LocaLDateTime的正确方法是什么?

  • 问题内容: 我是JAVA的新手,我正在尝试将JTextField的输入转换为整数,我尝试了很多选项,但是没有任何作用,蚀总是给我一个错误,并且这些错误对我来说没有意义。 导入java.awt.Graphics; 导入java.awt.Color; 问题答案: 代替: 试试这个: 您不能解析为,但是 可以解析 其包含的 值 -文本。

  • 问题内容: 我有一个接收a的函数,但是我所拥有的a是进行此转换的最佳方法是什么? 我想我可以走很长一段路,然后将其放入字符串并放入字节中,但这听起来很难看,而且我认为还有更好的方法可以做到。 问题答案: 我同意Brainstorm的方法:假设您要传递机器友好的二进制表示形式,请使用该库。OP建议可能会有一些开销。纵观源的实施,我看到它做了一些运行时的决策最大的灵活性。 对?Write()接受一个非