You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 10:24:03