【问题标题】:Find button by ID in Kotlin在 Kotlin 中按 ID 查找按钮
【发布时间】:2019-11-10 20:24:44
【问题描述】:

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

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

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    您在代码中调用 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)
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多