所有内容都可以很好地编译,但在运行时可以进行任何扩展的活动
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
答案 0 :(得分:1)
更改软件包名称后会发生此类错误。转到清单文件并确保正确引用您的活动:
<activity
android:name=".BaseActivity" //Check here
...
</activity>
正如您在编辑中看到的那样,您在清单中声明了一个包:
package="com.mycompany.locker"
同时,您的活动包是:
com.mycomp.locker.MainActivity
我认为这就是你问题的原因。
答案 1 :(得分:0)
这是你的意图的问题。
请在AndroidManifest.xml.
如果您想要开展新活动,请在AndroidManifest.xml.