在Kotlin中按ID查找按钮



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

我在这里找到了一个在java中有效的解决方案:Android:在循环中使用带有字符串/的findViewById((我试着在科特林改编。

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)
}

最新更新