android - 从 EditText 获取 Int 值的标准方法是什么?(Android Kotlin/Java)
问题描述
我现在正在清理我的代码。我有一个 EditText 视图,它接收“数字”类型的输入。在我的代码中,我使用此代码来获取值:
val host: Int = binding.serverInputBox.text.toString().toInt()
正如您可能已经知道的那样,EditText
文本值是 type Editable
,并且将其翻译两次似乎很长,第一次翻译为String
,然后第二次翻译为Int
。
我的问题是:这是最有效的方法吗?还是有更好的选择?
解决方案
不,没有直接的方法,Editable
extends 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()
推荐阅读
- javascript - Jquery-ui 可调整大小的函数不能与 flexbox div 一起工作
- php - 在单个 PHP 函数上执行多个 cron 作业
- android - Flutter - 如何在应用邀请功能的 Firebase 动态链接中传递自定义参数?
- python - 遍历两个列表 A 和 B
- javascript - 使用Javascript将图像转换为黑白
- azure - 我们可以在 Azure 中使用 PostgREST API
- android - ARCore Release 版本的问题
- kubernetes - 版本“extensions/v1beta1”中类型“部署”没有匹配项
- php - 从 url 地址列出导航
- python - 如何根据 Django 中的组(角色)向用户添加新字段