從一個 Activity 跳轉到另一個 Activity 時,應用彈出「已停止運行」對話框。Logcat 可能顯示 ActivityNotFoundException 或 NullPointerException。
Eclipse/AS 中右鍵其他項目選 Close Project,避免資源衝突、構建緩存干擾,加快啟動速度。
startActivity(intent))打斷點。ActivityThread),按 F7 直接返回調用處。intent 對象:action、component、extras 是否符合預期。目標 Activity **必須在 AndroidManifest.xml 中聲明**,且 intent-filter 需匹配啟動 Intent:
<!-- 錯誤:SecondActivity 未聲明,或 action 不匹配 -->
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/> <!-- 自定義 action -->
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<!-- 方式一:顯式 Intent (推薦,無需 action) -->
<activity android:name=".SecondActivity" />
<!-- 方式二:隱式 Intent (需完整匹配 action + category + data) -->
<activity android:name=".ThirdActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
// 顯式 Intent:直接指定類,無需 Manifest action
Intent explicit = new Intent(this, SecondActivity.class);
startActivity(explicit);
// 隱式 Intent:需匹配 ThirdActivity 的 intent-filter
Intent implicit = new Intent(Intent.ACTION_VIEW);
implicit.setData(Uri.parse("https://m.baidu.com"));
startActivity(implicit);
ActivityNotFoundException | Manifest 未聲明、包名錯誤、隱式 Intent 無匹配 | 檢查 <activity>、intent-filter |
| NullPointerException | Intent 為 null、Extra 取值未判空 | 斷點檢查 Intent 構建過程 |
| SecurityException | 權限不足(如調用系統 Activity) | 檢查 uses-permission、exported 屬性 |
android:exported 明確設置:內部 Activity 設 false,對外暴露設 true (API 31+ 強制要求)。掌握這套流程,Activity 跳轉崩潰不再是攔路虎,而是熟練駕馭 Android 四大組件的必經之路。