android - 如何使用 Kotlin 从 Android 中动态选择的文本输入框中获取文本输入?
问题描述
我有一个名为input_x
x 是数字的多个 TextInput(例如 input_1、input_2 等)。我还有多个名为btn_x
x 是数字的按钮(例如 btn_1、btn_2 等)。
当btn_x
按下 a 时,我应该能够打印与 x 值匹配的输入值(例如,当按下 btn_2 时,将打印 input_2 中的值。)
这是我目前不起作用的尝试:
fun handleClickButton (view: View) {
with (view as Button) {
var this_btn = view.resources.getResourceEntryName(id)
val id_string = this_btn
val delim = "_"
val arr = id_string.split(delim).toTypedArray()
val id_num = arr[2]
val this_input = "input_" + arr[2].toString()
print(binding.this_input.text)
}
}
任何帮助将不胜感激!我对 android 开发和 Kotlin 非常陌生。
解决方案
以下是需要解决的问题:
arr[2]
当 的长度为 2 时得到arr
;所以这应该是arr[1]
因为数组是 0-baed 索引以避免ArrayIndexOutOfBoundsException
binding
使用此表达式在对象上调用文本值,binding.this_input
并且binding
需要具有视图 ID:
不确定是否可以将 int 的视图绑定用作视图 ID,因为该视图的此引用名称未在生成的绑定类中注册。
但至少您可以通过以下方式实现findViewById
:
在您的代码中应用它:
fun handleClickButton(view: View) {
with(view as Button) {
val this_btn = view.resources.getResourceEntryName(id)
val id_string = this_btn
val delim = "_"
val arr = id_string.split(delim).toTypedArray()
val id_num = arr[1]
val this_input = "input_" + arr[1]
val id = resources.getIdentifier(this_input, "id", context.packageName)
val input = this@MainActivity.findViewById<EditText>(id)
print(input.text)
}
}
注意:我假设周围的活动为MainActivity
,您可以将其替换为您的活动,因为省略它将findViewById()
在按钮上被调用。
推荐阅读
- itext7 - iText7 PdfTextExtractor.GetTextFromPage “'StandardEncoding' 不是受支持的编码名称。”
- c - 目标和源文件不匹配 - C
- scala - 无法将火花数据帧写入 s3 存储桶
- css - 制作一个内部带有惰性图像的方形元素
- python - 用于教育的哈希表问题
- php - 如何从数组中以 HH:mm:ss 格式计算时间
- html - css 没有被应用“.class” over "> div" 标签
- liferay - 我的第一个 portlet 没有显示在 liferay 仪表板上。激活它时会出错
- laravel - 在 Laravel Spark 中使用 Vue - “方法未在实例上定义”使用 vue2-touch-events - 我可以做些什么不同的事情?
- python - 为什么使用两个 ASCII basckpace (\b) 会改变字符的顺序?