Android ActionBarSherlock&x2B;地图+;Loaders=java.lang.NoClassDefFoundError
编辑:有关详细操作方法,请查看 我已经挣扎了两天了,希望有人能帮我 我正在尝试将最新的ActionBarSherlock(4.0)与地图视图结合使用。我知道碎片有问题,但我在这个活动中不需要它们。但是我需要加载程序,而且为了使用加载程序,我还必须扩展碎片活动。没问题,我想,我们有皮特·道尔的消息。正如许多SO线程和Google组建议的那样,我使用android-support-v4-googlemaps JAR(实际上是android-support-v13-r7-googlemaps.JAR)而不是android-support-v4.JAR构建ABS。然后我用它作为我项目的库 现在,我希望我的活动是这样的:Android ActionBarSherlock&x2B;地图+;Loaders=java.lang.NoClassDefFoundError,android,android-maps,actionbarsherlock,android-loadermanager,Android,Android Maps,Actionbarsherlock,Android Loadermanager,编辑:有关详细操作方法,请查看 我已经挣扎了两天了,希望有人能帮我 我正在尝试将最新的ActionBarSherlock(4.0)与地图视图结合使用。我知道碎片有问题,但我在这个活动中不需要它们。但是我需要加载程序,而且为了使用加载程序,我还必须扩展碎片活动。没问题,我想,我们有皮特·道尔的消息。正如许多SO线程和Google组建议的那样,我使用android-support-v4-googlemaps JAR(实际上是android-support-v13-r7-googlemaps.JAR)
公共类BananoutMapActivity扩展SherlockFragmentActivity实现LoaderCallbacks{
问题:
它进行编译,但抛出运行时错误:E/AndroidRuntime(29159):java.lang.NoClassDefFoundError:ndl.klimczak.bananout.BananoutMapActivity
我已经三次检查过的内容:
- ActionBarSherlock库项目和我的项目都是针对Google API 4.0.3的
- 我有
,我在应用程序标签中有它 - 我的项目的构建路径中也有相同的android-support-v13-r7-googlemaps.jar
- 我在清单中声明了
.BananoutMapActivity
- 当我在ICS仿真器上运行它时,它会工作(错误出现在2.*仿真器和我的2.3.7设备上),在蜂巢上,它也可能工作,我想这是使用ACL的问题
- 当我删除
部分时,它也可以工作,但这样我就无法使用LoaderManagerimplements LoaderCallbacks
究竟为什么会出现NoClassDefFoundError错误,以及如何让加载程序在my MapCapableSherlocketEnabledFragmentActivity中工作?您需要使用支持库中的加载程序,而不是平台中的加载程序。因为这些加载程序仅在Android 3.0+上可用,而且您已经将它们包含在您的类中定义将导致3.0之前的类加载器完全拒绝您的类。将您的导入切换到支持库变体应该是所有需要的 如果您查看Logcat中异常的上方,您应该会看到一个或多个VerifyErrors,这些错误将具体概述它的问题所在
您也只能在android 3.2及更高版本上使用
android-support-v13
库(因此在其名称中使用v13
)已弃用:我想问题不会再出现了。如果您决定使用弃用的v1,解决方案如下
因此,杰克回答了确切的问题,但我认为,对某些人来说,有一个或多或少详细的操作方法是很有用的。那么,如何让ActionBarSherlock与地图一起工作呢? 我假设你已经建立了ActionBarSherlock并作为一个库项目工作,你可以找到很多关于如何实现它的教程 如果您只想将MapActivity与ActionBarSherlock一起使用,那么很容易:
public
(新版本的ABS不需要此步骤)
放入清单文件的应用程序标记中导入android.support.v4.app.LoaderManager;
而不是导入android.app.LoaderManager;
这是目前最好的解决办法,直到谷歌将地图放入兼容性库。我希望他们在4.*设备超过2.*之前完成这项工作…刚刚要写这篇文章。似乎是个问题。没错!我真不敢相信我忽略了这么明显的事情!非常感谢!顺便说一句,我使用的是皮特·多伊尔(Pete Doyle)的谷歌v13版本映射兼容性库,它也包括v4,所以我认为这不会是一个问题(当我切换导入时也不是)。啊,是的。它是一个添加(而不是完全替换)v4版本中包含一个特殊的寻呼机适配器,它更接近框架进行优化。只要您不使用它,您就会非常好。这非常好!虽然不需要使用ABS v4.2.0步骤#6(更改SupportInvalidateOptions功能表的可见性)。。。