2015-10-28 83 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' –

相关问题