Android Explicit Intent会抛出NoClassDefFound错误

时间:2011-05-01 13:47:07

标签: android android-intent maps explicit

我正在尝试使用显式意图在我的Android应用中显示MapView。虽然我没有看到我的代码有任何问题,但是当我尝试开始我的活动时,我不断收到“NoClassDefFoundError”。   基本上,从我的主要活动(SetCriteria),我在用户按下按钮时创建显式意图:

 Log.i(TAG, "Showing map..");
 try{
   Intent intentMap = new Intent(view.getContext(), AddLocation.class);
   startActivity(intentMap);
}catch(Throwable ex) {
   Log.e(TAG, "Error occured while trying to display map", ex);
}

我的LogCat显示:

 java.lang.NoClassDefFoundError: com.adm.AddLocation
 ...
 Caused by: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

My Manifest看起来像这样:

<application android:label="@string/app_name" android:icon="@drawable/ic_launcher_red">
    <uses-library android:name="com.google.android.maps"/>              
    <activity android:name=".SetCriteria"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>        
    <activity android:name=".AddLocation" 
          android:label="@string/add_location">         
    </activity>
</application>

我只有一个包:com.adm。那可能是什么错?使用Intent(Intent.ACTION_VIEW,uri)启动地图没有问题,但我希望我的具体活动处理地图。

2 个答案:

答案 0 :(得分:1)

从清单摘要中不清楚,您已定义了哪个包。

您需要将它放在顶级清单元素中:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.adm"
          >

    <application android:icon="@drawable/icon" android:label="@string/app_name" ...

如果您不添加,系统将不会使用包,您的活动“.AddLocation”将以没有类的“AddLocation”结束,这与com.adm.AddLocation不同。< / p>

答案 1 :(得分:1)

您应该在第二个活动声明中删除类名前的“.”(点),因此它看起来像:

<activity android:name="AddLocation" android:label="@string/add_location">