点击按钮启动MainActivity时应用崩溃,求排查原因及解决方法
问题排查与解决办法
看你的Logcat报错和代码,问题其实很清晰——系统找不到能处理你创建的Intent的Activity,主要有两个原因:
1. 代码里的Intent字符串存在语法错误
你写的Intent目标字符串是:
"com.tjdroid.higherorlower.MainActivity}"
末尾多了一个多余的闭合大括号},这会导致系统识别不到正确的目标标识。
2. 用Action方式启动Activity的配置缺失
就算去掉多余的括号,直接用字符串Action启动Activity,也需要在AndroidManifest.xml中给目标Activity配置对应的Intent过滤器,不然系统无法匹配到对应的Activity。
推荐解决方案(最常用、最不易出错的方式)
直接通过类名创建Intent来启动MainActivity,这种方式不需要额外配置Manifest,代码更直观:
fun playAgain() { btnPlayAgain.setOnClickListener { // 把「当前Activity名」替换成这个按钮所在的Activity类名,比如this@ResultActivity val intent = Intent(this@当前Activity名, MainActivity::class.java) startActivity(intent) } }
备选方案(坚持用Action方式启动)
如果你一定要用字符串Action的方式,需要完成以下两步:
步骤1:修正Intent的字符串
去掉多余的闭合大括号:
val intent = Intent("com.tjdroid.higherorlower.MainActivity")
步骤2:在AndroidManifest.xml中配置Intent过滤器
给MainActivity添加对应的<intent-filter>,注意必须包含DEFAULT category(Android 12及以上还需要配置android:exported="true"):
<activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="com.tjdroid.higherorlower.MainActivity" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
内容的提问来源于stack exchange,提问作者user1935107
相关产品推荐
相关产品推荐

