You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何通过存储按钮ID的列表修改按钮颜色?

解决方法

你的问题核心是列表里存的是按钮的ID(Int类型),但setBackgroundColor是View类的方法,Int类型没有这个方法,所以直接调用会报错。下面给你两种可行的解决思路:

思路一:直接存储Button对象(推荐)

把列表的类型改成存储Button对象,而不是ID,后续直接调用方法即可,更简单安全:

  1. 修改列表定义:
val move_list: MutableList<Button> = mutableListOf()
  1. 点击按钮时把Button对象加入列表:
fun for_btn_buba2(view: View){
    // 直接添加点击的按钮对象,view就是当前点击的按钮
    move_list.add(view as Button)
    // 也可以直接用控件变量:move_list.add(buba2)
}
  1. 修改颜色时直接调用方法:
move_list[0].setBackgroundColor(Color.parseColor("#FFFC9D45"))

思路二:存储ID,通过ID获取View后修改颜色

如果一定要存储ID,需要先通过ID找到对应的Button对象,再调用方法:

  1. 列表类型改成存储Int(ID的类型):
val move_list: MutableList<Int> = mutableListOf()
  1. 点击按钮时添加ID(和你原来的代码一致):
fun for_btn_buba2(view: View){
    move_list.add(buba2.id)
}
  1. 修改颜色时,先通过ID获取Button对象:
// 在Activity中直接用findViewById获取控件
val targetButton = findViewById<Button>(move_list[0])
targetButton?.setBackgroundColor(Color.parseColor("#FFFC9D45"))
// 用?是避免找不到View的情况,防止空指针异常

额外提醒

  • 尽量避免用Any作为列表类型,这样会丢失类型信息,后续操作需要强制转换,容易出错。用具体类型(比如Button或Int)更符合Kotlin的类型安全特性。
  • 如果是在Fragment中,需要用view?.findViewById或者requireView().findViewById来获取控件。

内容的提问来源于stack exchange,提问作者Ihor Kovt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:33:25