首页 > 解决方案 > 从 EditText 获取 Int 值的标准方法是什么?(Android Kotlin/Java)

问题描述

我现在正在清理我的代码。我有一个 EditText 视图,它接收“数字”类型的输入。在我的代码中,我使用此代码来获取值:

            val host: Int = binding.serverInputBox.text.toString().toInt()

正如您可能已经知道的那样,EditText文本值是 type Editable,并且将其翻译两次似乎很长,第一次翻译为String,然后第二次翻译为Int

我的问题是:这是最有效的方法吗?还是有更好的选择?

标签: androidkotlin

解决方案


,没有直接的方法,Editableextends CharSequence,没有method要转换CharSequence的方法Int,您可以手动进行,如下所示,String.toInt()在后台使用哪种方法

 var value = 0
 editText.text.forEach { 
    if(it !in '0'..'9') throw NumberFormatException("")
    value = value * 10 + (it - '0')
 }

更新

您可以在其中创建相同的extension功能CharSequence

fun CharSequence.toInt(): Int{
    var value = 0
    this.forEach {
        if(it !in '0'..'9') throw NumberFormatException("Invalid Input")
        value = value * 10 + (it - '0')
    }
    return value
}

中间没有toString()方法的用法

val host: Int = binding.serverInputBox.text.toInt()

推荐阅读