如何在Android上获得所有ImageButton ID的Kotlin

jjjwad0x  于 2022-12-13  发布在  Kotlin
关注(0)|答案(1)|浏览(129)

我有ImageButton的,我发送一个吐司从override fun onCreate(savedInstanceState: Bundle?)时,它的点击成功。
我希望循环遍历所有ImageButton,以便将setOnClickListener添加到其中。
这是可行的:

在没有循环的情况下工作:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        findViewById<ImageButton>(R.id.r1col1).setOnClickListener {
            toastContentDescription(it)
        }
    }
    private fun toastContentDescription(it: View) {
        val contentDescription = it.contentDescription
        val myToast = Toast.makeText(applicationContext, contentDescription, Toast.LENGTH_SHORT)
        myToast.show()
    }
}

不工作,不再启动

我在这里找到了一个Android Java按钮的例子:How to get all Buttons ID's in one time on Android
所以我修改了我的代码,以遵循。但后来的应用程序不再启动(给我没有错误)。
我想我得先拿到身份证,然后问题就解决了。

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        for (i in 0..4) {
            val id: Int = resources.getIdentifier("R.id.r1col$i", "id", this.packageName)
            findViewById<ImageButton>(id).setOnClickListener {
                toastContentDescription(it)
            }
        }
    }
    private fun toastContentDescription(it: View) {
        val contentDescription = it.contentDescription
        val myToast = Toast.makeText(applicationContext, contentDescription, Toast.LENGTH_SHORT)
        myToast.show()
    }
}

有没有办法将setOnClickListener设置为循环(等等)代码中的所有ImageButton?

z0qdvdin

z0qdvdin1#

从传递的字符串中删除前缀"R.id."

相关问题