android - 在 Kotlin 中按 ID 查找按钮

标签 android kotlin

我有一个带有多个按钮的用户界面。它们的 ID 为“button1”、“button2”、... 我想在 for 循环中为所有这些设置一个 OnClickListener。我不想为每个按钮键入类似 button1.setOnClickListener 的行。

我在这里找到了一种适用于 Java 的解决方案:Android: Using findViewById() with a string / in a loop 我尝试在 Kotlin 中对其进行改编。

var buttons = ArrayList<Button>()
for (i in 1..7) {
    var idString = "Button%i"
    var buttonID = getResources().getIdentifier(idString, "id", packageName)
    buttons.add( findViewWithTag(buttonID))
    buttons[i].setOnClickListener(buttonclicked)
}

这会引发“未解析的引用”错误。如何在不为每个按钮键入一行的情况下访问所有按钮? 在此先感谢大家。

最佳答案

您在代码中调用了 findViewWithTag() 而不是 findViewById()
此外,您没有通过 var idString = "Button%i" 正确地进行字符串插值。
更改为:

val buttons = ArrayList<Button>()
for (i in 1..7) {
    val idString = "Button$i"
    val buttonID = resources.getIdentifier(idString, "id", packageName)
    buttons.add(findViewById(buttonID))
    buttons[i].setOnClickListener(buttonclicked)
}

关于android - 在 Kotlin 中按 ID 查找按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58792622/

相关文章:

android - 如何使用 gradle-mvn-push 助手定义我的 group_id?

android - 水平 ScrollView ,左右子元素显示一点

android - 无法更新 FragmentPagerAdapter 中的 fragment

android - 使用应用程序操作发布 Android 应用程序时出错

android - 为什么在 Android Q 及更高版本上不需要 WRITE_EXTERNAL_STORAGE

android - 默认情况下,Android 相机中的正面

reduce - 如何在空的 Kotlin 数组上调用 reduce?

android - 如何在 android 中制作分享按钮 - Kotlin

java - LibGDX:Kotlin 与 Java

kotlin - KDoc常量引用值