2015-10-28 81 views
0

一切任何活動編譯罰款,但在運行時的任何活動擴展AppCompatActivity - 類未找到擴展AppCompatActivity

MainActivity extends android.support.v7.app.AppCompatActivity 

這項活動不能在運行時被發現。找不到MainActivity。它沒有說沒有找到AppCompatActivity

非常奇怪。我從未在5年的Android編程中無法在運行時找到Activity的類嗎?怎麼會這樣?

找到所有其他不會擴展AppCompatActivity的活動。這裏發生了什麼?

10-28 16:27:09.289: E/AndroidRuntime(12471): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mycomp.locker/com.mycomp.locker.MainActivity}: java.lang.ClassNotFoundException: com.mycomp.locker.MainActivity 

因此對於MainActivity來說是非常重要的。如果我離開MainActivity定期的活動,則它將啓動,但崩潰我試圖爲擴展AppCompatActivity該活動創建一個意圖的時刻:這裏

Intent i = new Intent(MainActivity.class, CompatExtendingActivity.class); 

///崩潰一樣。

這是一個Maven構建,Maven的SDK部署後...

<dependencies> 
    <dependency> 
     <groupId>android.support</groupId> 
     <artifactId>compatibility-v7-appcompat</artifactId> 
     <version>23.1.0</version> 
     <type>apklib</type> 
    </dependency> 
    <dependency> 
     <groupId>android.support</groupId> 
     <artifactId>compatibility-v7-appcompat</artifactId> 
     <version>23.1.0</version> 
     <scope>compile</scope> 
     <type>jar</type> 
    </dependency> 
    <dependency> 
     <groupId>android.support</groupId> 
     <artifactId>compatibility-v4</artifactId> 
     <version>23.1.0</version> 
     <scope>provided</scope> 
     <type>jar</type> 
    </dependency> 
    <dependency> 
     <groupId>android</groupId> 
     <artifactId>android</artifactId> 
     <version>6.0_r1</version> 
     <scope>provided</scope> 
    </dependency> 
<dependency> 

現在我爲什麼要使用AppCompatActivity呢?因爲我想使用一個小部件SwitchCompat。當我在一個普通的活動中使用這個組件我得到了另一個錯誤,它找不到:

android.support.v7.internal.widget.TintManager$ColorFilterLruCache 

所以我退出了使用定期活動。查看compat-v7的jar文件,但是我確實看到了這個類。我已經嘗試過在maven中編譯和提供選項,但都沒有什麼不同。

Android的清單:

package="com.mycomp.locker" 
    <activity 
     android:name=".MainActivity" 

我這裏什麼也沒有改變。我所做的只是你更改後MainActivity擴展AppCompatActivity

+0

發佈您的構建。gradle – Blackbelt

+0

發佈您的錯誤日誌 –

+0

可以用** Ctrl ** + **點擊**打開你的'MainActivity'?這是爲了確保它鏈接到正確的文件。 – Sufian

回答

1

這種錯誤的發生包name.Go到您的清單文件,並確保您的活動是正確引用:

<activity 
     android:name=".BaseActivity" //Check here 
     ... 
    </activity> 

正如你可以看到從您的編輯,你有一個包在你的清單中聲明爲:

package="com.mycompany.locker" 

同時,您的活動的包是:

com.mycomp.locker.MainActivity 

我想這就是你的問題的原因。

+0

我不這麼認爲。我在上面張貼了我的清單。我根本沒有改變清單。只有我從改變的類延伸。我沒有更改任何軟件包名稱。如果在代碼中切換回從Activity沒有問題擴展。它的所有內容都與代碼更改和compat庫相關。 – MuayThai

+0

看看編輯我的問題 –

+0

沒有,這只是一個編輯,以防止我的公司名稱。包名或活動名稱沒有更改。我將更新信息 – MuayThai

0

這是您的意圖的問題。

請您AndroidManifest.xml.

添加您的活動時,你想一個新的活動,你應該註冊它在你的AndroidManifest.xml.

+0

它不是一項新活動。它是同一個,但擴展了不同的基類。因此它的包名稱保持不變。 – MuayThai

+0

可以使用'公共類MainActivity擴展android.support.v7.app.AppCompatActivity' –

相關問題