编辑:对于一个详细讲述到,检查出我的答案 。
我现在用它挣扎了两天,希望有人可以提供帮助。
我试图用MapView。使用最新的ActionBarSherlock(4.0)。 我知道它是与碎片问题的,但我并不需要他们在本次活动。 但我需要装载机和它的出现,是用装载机我必须得延长FragmentActivity。 没问题,我认为,我们有Android的支持-V4-的GoogleMaps皮特·道尔。 由于许多建议SO线程和谷歌I组建立与Android的支持-V4-JAR Google地图(Android的支持-V13-R7-googlemaps.jar实际上),而不是Android的支持,v4.jar的ABS。 然后,我用它作为我的项目库。
现在,我想有我这样的活动方式:
public class BananoutMapActivity extends SherlockFragmentActivity implements LoaderCallbacks<ArrayList<EventItem>>{
问题:
它编译,但引发运行时错误: E/AndroidRuntime(29159): java.lang.NoClassDefFoundError: ndl.klimczak.bananout.BananoutMapActivity
事情我已经三重检查:
- 既ActionBarSherlock库项目,我的项目是针对谷歌的API 4.0.3
- 我
<uses-library android:name="com.google.android.maps" />
和我有它在该应用程序标记。 - 我也有同样的在我的项目的构建路径Android的支持-V13-R7-googlemaps.jar
- 我有
.BananoutMapActivity
在我的清单中声明
有趣的是:
为什么地球上的NoClassDefFoundError的错误,以及如何得到我的MapCapableSherlockEnabledFragmentActivity工作的装载机?
您需要使用的装载机从支持库,而不是从平台的人。 因为这些是仅适用于Android 3.0+和你已经包括他们在您的类定义的事实将导致预加载器3.0拒绝你的类顾左右而言他。 切换您的进口支持库变量应该是所有需要为该。
如果你看一下在logcat的例外上面,你应该看到一个或多个VerifyErrors将勾勒出具体是什么,它争起来了。
您也可以只使用android-support-v13
上Android 3.2的图书馆和向上(因此v13
在其名称)。
弃用 :我想这个问题消失与谷歌地图API的Android V2 。 如果你决定使用过时的V1,该解决方案如下。
于是杰克回答确切的问题,但我认为这将是有益的人有或多或少的细节 - 如何。 因此,如何使地图ActionBarSherlock工作?
我假设你有ActionBarSherlock设置和工作作为一个库项目,你可以找到很多的教程就如何做到这一点。
如果你只是想使用ActionBarSherlock MapActivity - 这很容易:
- 下载杰克的MapsPlugin https://github.com/JakeWharton/ActionBarSherlock-Plugin-Maps ,
- 把它放在你的应用程序的libs文件夹,它包括在构建路径。
如果您想使用的MapView与蜂窝功能,如碎片或装载机:
- 下载皮特·道尔的Android支持包与谷歌地图: https://github.com/petedoyle/android-support-v4-googlemaps ,
- 做一个罐子(如果你下载预编译罐子,它只是一个重命名zip包罐子的事情,如果你不知道)。 你可以得到的V13版本,它包含V4,
- 请在工作区ActionBarSherlock库的副本(命名为ActionBarSherlockMaps或像这样),就不要与原来的一个烂摊子,你可能以后什么使用它,
- 记住要建立既ActionBarSherlockMaps和对最新谷歌的API项目。 如果您使用标准Android 4.0.3无谷歌的API,它不会工作
- 把罐子(如Android的支持-V13-R7-googlemaps.jar)在新ActionBarSherlockMaps的libs文件夹,从构建路径排除Android的支持,v4.jar和包括Android的支持-V13-R7-谷歌地图。罐
- 随着版本7,你必须在这个步骤中SherlockFragmentActivity编译错误。 查找
protected void supportInvalidateOptionsMenu()
并改变其知名度, public
(无需在ABS的新版本中这一步) - 把同样的罐子在您的项目的libs文件夹,排除从构建路径Android的支持,v4.jar和包括Android的支持-V13-R7-googlemaps.jar
- 确保将
<uses-library android:name="com.google.android.maps" />
在您的清单文件的应用程序标记 - 确保你使用正确的进口的片段,装载机和东西! 您应该使用如
import android.support.v4.app.LoaderManager;
的insted的import android.app.LoaderManager;
- 享受ActionBarSherlock +谷歌地图+碎片+装载机
这是现在最好的解决方法,直到谷歌地图把在兼容性库。 我希望他们会做4 *设备数量超过2之前。* ...