Kotlin Android:RecyclerView启动Activity报ActivityNotFoundException问题求助
问题根源定位
交叉比对报错栈、跳转代码、Manifest配置,报错本质是三处路径信息不一致导致系统找不到目标Activity,并非完全没有声明组件:
- 报错栈显示系统尝试查找的目标组件全路径为
fr.amseu.myapp/fr.amseu.myapp.Activity.LowerLegsActivity,但你的应用根包名是fr.amseu.mystretching,包名前缀已经出现明显偏差 - 你在Manifest中声明的Activity路径为
.lowerLegsActivity,换算后全路径为fr.amseu.mystretching.lowerLegsActivity,和代码里引用的LowerLegsActivity类的实际存放路径完全不匹配
逐点修正步骤
- 先核对实际类的存放路径:打开项目中
LowerLegsActivity的Kotlin源文件,确认文件顶部的package声明,记录类的全限定名(比如类放在java/fr/amseu/mystretching/activity路径下,对应的包声明就是fr.amseu.mystretching.activity,类全路径为fr.amseu.mystretching.activity.LowerLegsActivity) - 修正Manifest中的错误声明:你当前写的
.lowerLegsActivity存在两个问题,一是大小写不匹配(安卓组件名严格区分大小写),二是缺失子包路径层级。正确的声明格式为对应类的全路径去掉根包前缀,示例:<activity android:name=".activity.LowerLegsActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/title_activity_itam_exercices" android:theme="@style/Theme.MyStretching.Fullscreen"/> - 核对跳转代码的导入路径:检查Adapter文件顶部的import语句,确认
LowerLegsActivity导入的是刚才核对过的、项目内实际存在的类,避免IDE自动导包时误选其他模块、第三方依赖下同名字的类——报错栈里出现的fr.amseu.myapp前缀,大概率是之前拷贝示例代码时残留的错误导入。 - 清理重建项目:以上配置修改完成后,执行
Build -> Clean Project、Rebuild Project,彻底卸载设备上的旧版本应用后重新安装,避免旧APK残留的Manifest缓存导致组件解析失败。
常见踩坑提醒
- 安卓系统对Activity的名称解析严格区分大小写,哪怕字符完全一致,只要大小写出错(比如把类名首字母小写、Manifest里漏了大写字母),就会抛出
ActivityNotFoundException - Adapter中跳转使用
ContextCompat.startActivity(context, intent, null)本身逻辑没有问题,但要确保传入的context是有效可跳转的Activity上下文,不要使用已销毁的上下文。
内容的提问来源于stack exchange,提问作者Amaury Seuriot
相关产品推荐
相关产品推荐

