Android Kotlin项目点击第二个菜单选项导致应用崩溃如何解决
问题排查及解决方法
你遇到的崩溃大概率是以下几个常见原因导致的,按优先级逐一排查即可:
- 最常见原因:Impressum Activity未在AndroidManifest.xml中注册
Android要求所有自定义Activity必须在AndroidManifest.xml中声明才能跳转,你之前的Info页面已经加过注册,新增的Impressum漏加的话,跳转时会直接触发ActivityNotFoundException崩溃。
解决方法:在AndroidManifest.xml的<application>标签内添加如下代码:
<activity android:name=".Impressum" android:exported="false" android:parentActivityName=".MainActivity" />
如果你使用的是Android12及以上的targetSdk,且需要外部跳转打开该页面,将android:exported改为true即可,你这里是内部菜单跳转,设为false就可以。
- 第二常见原因:字符串资源缺失
你在activity_impressum.xml和menu_main.xml中都引用了字符串资源@string/header_info、@string/menu_impressumen,如果res/values/strings.xml中没有对应定义,会触发资源查找失败崩溃。
解决方法:在strings.xml中补充缺失的字符串定义,示例如下:
<string name="menu_impressumen"> Impressum </string> <string name="header_info"> Impressum 页头 </string>
- 可选优化项:菜单创建方法返回值调整
你当前的onCreateOptionsMenu方法返回的是父类方法结果,你已经手动inflate了菜单,直接返回true即可,修改后代码如下:
override fun onCreateOptionsMenu(menu: Menu?): Boolean { val inflater = menuInflater inflater.inflate(R.menu.menu_main, menu) return true }
如果完成以上修改后还是崩溃,可以查看Logcat里的崩溃栈日志,就能精准定位具体问题。
内容的提问来源于stack exchange,提问作者CSBossmann
相关产品推荐
相关产品推荐

