Kotlin开发Android时setOnClickListener标红,求排查原因
问题原因及修复方案
你的代码里有几个明显错误导致setOnClickListener标红:
- 调用对象错误:你用
Button.setOnClickListener是尝试调用Button类的静态方法,但Android的Button类并没有这个静态方法,正确做法是调用你通过findViewById获取到的按钮实例的方法。 - 变量命名冲突:你把获取到的Button实例命名成了
MainActivity2,这和你的第二个Activity类名重名,既不符合命名规范,还会导致后续启动Activity的代码出错。 - Intent相关错误:你把Intent变量命名成
Intent(和系统类名重复),而且启动的目标Activity写成了MainActivity2::class.java,但此时的MainActivity2是你定义的Button实例,不是真正的第二个Activity类。
修复后的代码如下:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 给按钮实例起清晰的名字,避免和类名冲突 val goToSecondActivityBtn = findViewById<Button>(R.id.button) // 调用按钮实例的setOnClickListener方法 goToSecondActivityBtn.setOnClickListener { // 使用小写开头的变量名,避免和系统类名重复 val intent = Intent(this, MainActivity2::class.java) startActivity(intent) } }
内容的提问来源于stack exchange,提问作者Kasmori
相关产品推荐
相关产品推荐

