2012-03-24 84 views
3
<uses-sdk android:minSdkVersion="7" /> 

<application 
    android:description="@string/app_description" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Light" > 
    <activity 
     android:name="com.xyz.Main.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

安卓:活動清單中的

不能登記,而皮棉工具告訴我,我的活動沒有在清單中註冊,如果我嘗試運行它,logcat的好心告訴我:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.name/com.xyz.Main.MainActivity}: java.lang.ClassNotFoundException: com.xyz.Main.MainActivity

這是我發瘋,我已經重新安裝了Eclipse以及更新的SDK和東西API-17級,現在我似乎無法執行我自己的應用程序。我完全不知道這裏到底有什麼問題,顯然這個活動在manifest.xml中很好地註冊了。

在此先感謝。

+0

你確定'com.xyz.Main.MainActivity'是正確的包名嗎?當你說'manifest.xml'時,你的意思是'AndroidManifest.xml',對嗎? – 2012-03-24 15:24:33

+0

是你的'活動'類私人?如果是這樣,請將其更改爲公開。 – 2012-03-24 15:27:42

+0

位於你的'AndroidManifest.xml'文件的頂部,你會看到'package =「package_name_here」'屬性。你可以嘗試設置你的'android:name =「。MainActivity」'或者這些行(前面的'.'基本上爲你添加了包名的其餘部分)。這與完成整個軟件包名稱的編寫是相同的,但它已經到了您要重新安裝SDK的地步,嘗試使用P – 2012-03-24 15:30:42

回答

3

我已經得到了解決。今天,我感到有足夠的動力,再次把我的手放在這個項目上,並試圖將該項目移植到Linux發行版(這導致了我的結論,即Linux對於Android的發展是一種痛苦),並將其整合爲「線按行「到一個新的Android項目。

我用來實現字符串-&具有特定常量和值的整數接口(例如0x00表示「可見」)。不幸的是,Android似乎遇到了界面和活動類的麻煩。刪除接口並在常量上創建靜態引用使模擬器擺脫了這個問題。

public class MyActivity extends Activity implements Options // [...] 
Btn.setVisibility(VISIBLE); // bad idea 

public class MyActivity extends Activity // [...] 
Btn.setVisibility(Options.VISIBLE); // good idea 

希望這會幫助至少有人搜索這個問題。

4

您的軟件包名稱包含大寫字母(「Main」),這可能是一個問題。看看這個問題code.google.com上:

http://code.google.com/p/android/issues/detail?id=27529

+0

這也是我的猜想。我遇到了同樣的問題。您可以做一個快速修復並禁用項目中的檢查,直到它們得到修復。這就是我們正在做的。 – 2012-03-28 14:55:30

+0

沒有爲我工作。只將包名更改爲小寫字母,根本沒有發現任何變化。 – 2012-04-08 15:43:56

+0

**寫入軟件包名稱不會產生此錯誤,因爲我已經寫入軟件包名稱僅限於Caps,它正在工作...... ** – GAMA 2012-04-23 10:10:58

1

我有同樣的問題:Lint無法識別AndroidManifest.xml中明顯正確的描述。

然後我改變了包名稱只有一個小的字母和字母。

Eclipse中的重構方案並沒有自動將包名稱自動重命名,因此我必須手動修復一些情況,例如重新鍵入清單文件中的包名稱。

當應用程序的所有部分最後都提到了新的軟件包名稱時,Lint也終於滿意了。

因此,只有在您喜歡麻煩的情況下,才能在包名中使用大寫字母和數字。

我想稱這是一個錯誤,或者至少是一個煩惱,因爲包名應該被允許遵循Java規則。

1

如果發生這種情況,請更正「包裝」名稱(如其他人所述),然後確保重新運行「Android Lint」。

警告將一直存在,直到Lint在糾正錯誤後再次運行。

0

由於我的一個愚蠢的錯誤,我得到了同樣的錯誤信息。我花了一段時間才能找到它,所以以防萬一別人犯同樣的錯誤,並絆倒在此線程,這裏就是我做錯誤的:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.DogsDropDown"> 

    <uses-sdk android:minSdkVersion="7" 
       android:targetSdkVersion="14"/> 

    <application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name"> 
    </application> 

    <activity 
     android:name="com.example.DogsDropDown.MainActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTop"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

</manifest> 

,一旦你看到它很明顯 - 我已把它放在在<應用程序>規範之外的<活動>規範,而不是在其內部。