我终于设法编译了appcompat-v7,现在当我的应用程序启动时,它会抛出以下异常:
java.lang.NoClassDefFoundError:com.example.Project1.MainActivity $ 1
这是它抛出的那一行:
package com.example.Project1;
public class MainActivity extends Activity
{
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
...
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.string.drawer_open, R.string.drawer_close)
这是Manifest中的包:
package="com.example.Project1"
它还包含MainActivity。
答案 0 :(得分:2)
请注意,异常是指MainActivity$1
,它是MainActivity中的匿名内部类,而不是MainActivity本身。我怀疑它是指你的ActionBarDrawerToggle,你的代码继续为:
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
...
}
public void onDrawerOpened(View drawerView) {
...
}
}
当我从ActionBarDrawerToggle v4(已弃用)迁移到v7时,遇到了同样的异常。最后,我发现异常是由于在我的项目中引用了两个不同的v7支持jar(其中一个不包含v7 ActionBarDrawerToggle)引起的。我通过
解决了这个问题android-sdk\extras\android\support\v7\appcompat
导入为Eclipse项目答案 1 :(得分:0)
通常,NoClassDefFoundError意味着您忘记在清单中定义活动。 这就是一个简单的清单应该是这样的:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.Project1">
<application
android:name=".Project1">
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
您的清单是否包含<activity>
标记及其内容?
您可以在此处查看更多信息:http://developer.android.com/guide/topics/manifest/manifest-intro.html