AppCompatActivity - 未找到任何扩展AppCompatActivity的活动的类

时间:2015-10-28 09:31:31

标签: android

所有内容都可以很好地编译,但在运行时可以进行任何扩展的活动

  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的Activity创建意图时崩溃:

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

///以同样的方式崩溃。

这是Maven SDK Deployer之后的maven构建......

    <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

2 个答案:

答案 0 :(得分:1)

更改软件包名称后会发生此类错误。转到清单文件并确保正确引用您的活动:

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

正如您在编辑中看到的那样,您在清单中声明了一个包:

 package="com.mycompany.locker"

同时,您的活动包是:

com.mycomp.locker.MainActivity

我认为这就是你问题的原因。

答案 1 :(得分:0)

这是你的意图的问题。

请在AndroidManifest.xml.

中添加您的活动

如果您想要开展新活动,请在AndroidManifest.xml.

中注册