天天看點

Android中的"Unable to start activity ComponentInfo"或者"Unable to instantiate activity ComponentInfo"的錯誤

 Android中的"Unable to start activity ComponentInfo"的錯誤

     最近在做一款音樂播放器的時候,然後在調試的過程中發現一直報這個錯誤"Unable to start activity ComponentInfo",從字面的意思看是無法啟動某個activity元件,但是看了manifest檔案,所有的activity元件都已經注冊過了,為什麼會報這種錯誤?後來發現原來是注冊路徑出了問題,最開始的代碼是這樣的:

<a></a>

 對于MainActivity這個元件,程式啟動的時候尋找它的時候,根據包的路徑"package="com.music"加上".MainActivity"就是

"com.music.MainActivity",但是在工程中MainActivity是在"com.music.activity"這個包下,顯然路徑就是錯的,是以會報無法找到某個元件的錯誤。是以更改元件的注冊路徑就可以解決這個問題:

   可以将&lt;activity android:name=".MainActivity"&gt;

   改成其相對路徑

  &lt;activity android:name=".activity.MainActivity"&gt;

  或者也可以直接用絕對路徑

  &lt;activity android:name="com.music.activity.MainActivity"&gt;

注意:在注冊元件的時候,如果在名稱前面加了點'.',則表示該元件的路徑是package的路徑加上元件名,比如package='com.music',&lt;activity android:name='.MainActivity'&gt;&lt;/activity&gt;,則其完整路徑為'com.music.MainActivity'。

如果沒有加點,則表示絕對路徑,如&lt;activity android:name="com.music.activity.MainActivity"&gt;。

有一種特殊情況是,如果要注冊的activity在目前package的根目錄下,則前面的點'.'可寫可不寫。但是如果是在package包的子包下,如package='com.music',而MainActivity的絕對路徑為'com.music.activity.MainActivity',則

&lt;activity android:name=".activity.MainActivity"&gt;中的".activity.MainActivity"前面的點'.'不能省略。

本文轉載自海 子部落格園部落格,原文連結:http://www.cnblogs.com/dolphin0520/archive/2011/12/02/2271922.html如需轉載自行聯系原作者

繼續閱讀