编辑:有关详细的操作方法,请查看我的答案。
我这两天一直在苦苦挣扎,希望有人能帮忙。
我正在尝试将最新的 ActionBarSherlock (4.0) 与 MapView 一起使用。我知道片段有问题,但我在这个活动中不需要它们。但是我需要加载器,而且看来,要使用加载器,我也必须扩展 FragmentActivity。没问题,我想,我们有来自 Pete Doyle的android-support-v4-googlemaps 。正如许多 SO 线程和 Google 组所建议的那样,我使用 android-support-v4-googlemaps JAR(实际上是 android-support-v13-r7-googlemaps.jar)而不是 android-support-v4.jar 构建 ABS。然后我将它用作我的项目的库。
现在,我想以这种方式进行活动:
public class BananoutMapActivity extends SherlockFragmentActivity implements LoaderCallbacks<ArrayList<EventItem>>{
问题:
它可以编译,但会引发运行时错误:E/AndroidRuntime(29159): java.lang.NoClassDefFoundError: ndl.klimczak.bananout.BananoutMapActivity
我已经三重检查的事情:
- ActionBarSherlock 库项目和我的项目都针对 Google API 4.0.3
- 我有
<uses-library android:name="com.google.android.maps" />
并且我有它在应用程序标签中。 - 我的项目的构建路径中也有相同的 android-support-v13-r7-googlemaps.jar
- 我已经
.BananoutMapActivity
在我的清单中声明
有趣的是:
当我在 ICS 模拟器上运行它时它可以工作(错误出现在 2.* 模拟器和我的 2.3.7 设备上),在 Honeycomb 上它很可能也可以工作,我猜这是使用 ACL 的问题
当我删除
implements LoaderCallbacks<ArrayList<EventItem>>
它也可以工作的部分时,但是这样我就无法使用 LoaderManager
为什么会出现 NoClassDefFoundError 错误以及如何让加载程序在我的 MapCapableSherlockEnabledFragmentActivity 中工作?