我有一个带有多个按钮的用户界面。它们的 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/