Kotlin中Button调用setOnClickListener空指针异常,求页面跳转解决办法
先帮你理清楚:你的报错信息里明确说了,空指针异常是出在NumberVer这个Activity里的,不是你贴出来的MainActivity哦!错误提示是说你在调用Button的setOnClickListener时,Button对象是null的,这说明你在NumberVer里没正确绑定对应的按钮控件。
你需要排查这几个关键点:
- 先确认
NumberVer对应的布局文件(比如activity_number_ver.xml)里,确实有你要设置点击事件的Button,并且它的android:id属性是正确设置的,比如android:id="@+id/目标按钮id" - 在
NumberVer的onCreate方法里,必须先调用setContentView加载布局,之后再通过findViewById获取Button实例,顺序绝对不能搞反。
给你贴个NumberVer的正确代码示例参考:
class NumberVer : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 第一步:先加载当前Activity的布局 setContentView(R.layout.activity_number_ver) // 第二步:根据布局里的id获取Button实例 val targetButton = findViewById<Button>(R.id.你的按钮id) // 第三步:给按钮设置点击事件 targetButton.setOnClickListener { // 这里写你需要的逻辑 } } }
另外顺便提一句,你的MainActivity里的next1按钮最好也确认下是否正确初始化了?虽然这次报错不是来自这里,但稳妥起见,建议在NumberVerButton方法里先获取按钮实例:
private fun NumberVerButton() { val next1 = findViewById<Button>(R.id.next1) next1.setOnClickListener { startActivity(Intent(this, NumberVer::class.java)) } }
总的来说,这次空指针的核心原因就是控件没有和代码正确绑定,要么是布局里id写错了,要么是代码里获取控件的时机不对(没先加载布局),按上面的步骤排查应该就能解决啦。
内容的提问来源于stack exchange,提问作者S K
相关产品推荐
相关产品推荐

