初學Android遇到Unfortunately,xxx has stopped!真是一件讓人頭疼的事情,下面就遇到的兩種可能情況給出解決方案。通常遇到的情況在於由一個Activity跳轉至另一個Activity時發生。
錯誤截圖如下:
當遇到這種情況后請先查看你的logcat日志。然后看一看是否屬於下面的情況。
--------------------------------------------------------------------------------
第一種:
其中一種錯誤日志包含有類似如下的語句:
android.content.ActivityNotFoundException:
Unable to find explicit activity class {test.xxx/test.xxx.xxx}; have you declared this activity in your AndroidManifest.xml?
意思就是:
找不到Activity異常。
不能找到xxx類Activity,並且詢問你你是否已經聲明了你的Activity在AndroidManifest.xml文件中。這種情況下很有可能是你的某一個要跳轉的Activity沒有在Activity在AndroidManifest.xml中進行聲明。聲明格式如下:
- <application>
- <activity
- android:name="test.activity.ResultActivity"
- android:label="@string/nickname"/>
- </application>
其中test.activity.ResultActivity是你的Activity名稱,這里你最好使用eclipse的提示功能然后選擇對應的Activity名稱。當然你也可以縮寫為.ResultActivity這時要注意,那個點不能少。除此之外Activity的聲明要放在<application></application>中。
--------------------------------------------------------------------------------
第二種:
同樣的查看Logcat,如果日志中包括類似下面的提示:
java.lang.RuntimeException:
Unable to start activity ComponentInfo{xxx}: java.lang.NumberFormatException: Invalid int:"factorFirStr"
意思就是:運行時異常。
不能夠讀取組件信息,大括號內是出現異常的組件。具體錯誤是數據格式異常,最后給出了無效的整型變量"factorFirStr"(當然這個變量在這里只是個例子)。
那么解決的方法就是處理好這個變量。所以找bug是就從這個變量或者與這個變量相關的地方找。錯誤基本上可以肯定出現在這兒。看看是不是哪里的語法什么錯了,還是單詞拼寫錯誤,或是不該加引號的加了引號等等,這些大多是由於不信心造成。
這里有時候還會提示......Invalid int: "null",這說明你的Activity在傳遞數據的過程中某個或幾個數據值為空類型,也就是值沒有傳遞成功,這是你可以考慮一下是不是Intent在傳遞過程中哪里出現了不對。
--------------------------------------------------------------------------------
第三種:
logcat顯示:
java.lang.RuntimeException:
Unable to instantiate activity ComponentInfo{test.androidstudy05/test.androidstudy05.ThirdActivity}: java.lang.ClassCastException: test.androidstudy05.ThirdActivity cannot be cast to android.app.Activity
提示為提供activity組件信息,不能夠啟動到android.app.Activity
問題可能是你要跳轉的類未繼承Activity,你可以嘗試檢查一下你的類是否繼承了Activity。在你繼承了類Activity之后你必須引入包android.app.Activity,而這里提示不能夠投射到android.app.Activity,也就是說你可能未繼承Activity。