Kotlin实现MainActivity按钮菜单跳转Activity崩溃解决方案
按钮点击跳转崩溃修复方案
核心崩溃原因
结合代码和报错截图,点击按钮崩溃由两个高频问题直接导致:
- 目标Activity类名拼写错误:跳转遗嘱计算功能页时,代码里写的目标类是
ProbateActvity,正确类名应为ProbateActivity(单词Activity漏写了字母i),类名不匹配会直接触发类找不到异常。 - 新增Activity未在清单文件注册:所有自定义Activity必须在
AndroidManifest.xml中声明,否则启动时会抛出ActivityNotFoundException直接崩溃。
分步修复操作
- 修正类名拼写错误
将btnprobate点击事件里的Intent初始化代码修正为:val probateintent = Intent(this, ProbateActivity::class.java) - 注册目标Activity
打开项目路径下的app/manifests/AndroidManifest.xml文件,在<application>标签内部添加两个Activity的注册声明:<activity android:name=".ProbateActivity" /> <activity android:name=".ConveyanceActivity" /> - 清理冗余代码(非崩溃必改项,建议优化)
类顶部声明的两个可空Button成员变量没有实际使用,属于冗余代码,直接删除即可,避免后续维护产生混淆:// 删除以下两行无用声明 // private var btnprobate: Button? = null // private var btnconveyance: Button? = null
修复后完整MainActivity代码
package com.example.myapplication import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val btnprobate: Button = findViewById(R.id.btn_probate) val btnconveyance: Button = findViewById(R.id.btn_conveyance) btnprobate.setOnClickListener { val probateintent = Intent(this, ProbateActivity::class.java) startActivity(probateintent) } btnconveyance.setOnClickListener { val conveyanceintent = Intent(this, ConveyanceActivity::class.java) startActivity(conveyanceintent) } } }
补充排查项
如果完成以上操作后仍崩溃,逐项校验:
- 布局文件
activity_main.xml中两个按钮的id,和findViewById传入的id完全一致,注意大小写、下划线拼写 - 两个目标Activity类文件的包路径和MainActivity同包,不同包的话需要写全类名完成注册
- 两个目标Activity的
onCreate方法中,已正确调用setContentView加载对应布局
参考报错截图

内容的提问来源于stack exchange,提问作者Marlon
相关产品推荐
相关产品推荐

