
本文详解 Android 中因 ActivityNotFoundException 导致跳转失败的常见原因,重点排查 IntroActivity 或目标 MainActivity 未在 AndroidManifest.xml 中正确声明的问题,并提供完整修复步骤与最佳实践。
本文详解 android 中因 `activitynotfoundexception` 导致跳转失败的常见原因,重点排查 `introactivity` 或目标 `mainactivity` 未在 `androidmanifest.xml` 中正确声明的问题,并提供完整修复步骤与最佳实践。
在 Android 开发中,使用 startActivity() 启动新 Activity 时发生崩溃(如点击 “Get Started” 按钮后闪退),最常见的根本原因是 目标 Activity 未在 AndroidManifest.xml 中注册,系统无法识别该组件,从而抛出 ActivityNotFoundException。
你的 IntroActivity 代码逻辑本身是正确的:通过 findViewById 获取 ConstraintLayout 类型的按钮容器,并设置点击监听器启动 MainActivity。但若 MainActivity(或 IntroActivity 自身)未在清单文件中声明,运行时将直接崩溃,且 Logcat 通常会明确提示:
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.portfolioapplication/com.example.portfolioapplication.Activity.MainActivity}; have you declared this activity in your AndroidManifest.xml?
✅ 必须检查并确保以下两项均已在 AndroidManifest.xml 中正确定义:
-
IntroActivity必须声明为可启动的入口 Activity(若作为启动页):<activity android:name=".Activity.IntroActivity" android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN"></action><category android:name="android.intent.category.LAUNCHER"></category></intent-filter></activity>
-
MainActivity必须声明(即使非启动页):<activity android:name=".Activity.MainActivity" android:exported="false"></activity>
⚠️ 注意事项:
- 包路径需严格匹配:
com.example.portfolioapplication.Activity.IntroActivity对应android:name=".Activity.IntroActivity"(以.开头表示相对于包名的相对路径); - Android 12+(API 31+)要求显式设置
android:exported属性:有<intent-filter></intent-filter>的 Activity 必须设为true;无 intent-filter 且仅被本应用内调用的(如MainActivity),建议设为false; - 推荐使用
ViewBinding替代findViewById提升类型安全与性能(避免强制类型转换风险):
// 替代方案(在 onCreate 中)
ActivityIntroBinding binding = ActivityIntroBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.startBtn.setOnClickListener(v ->
startActivity(new Intent(this, MainActivity.class))
);
? 总结:
崩溃不是代码逻辑错误,而是配置缺失。请优先检查 AndroidManifest.xml —— 这是 90% 类似问题的根源。修复后 Clean & Rebuild 项目,即可稳定跳转。后续建议启用 Android Studio 的 Manifest Merger 警告提示,并在 build.gradle 中配置 lintOptions 检测未注册 Activity。










