Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ActionBarSherlock&x2B;地图+;Loaders=java.lang.NoClassDefFoundError_Android_Android Maps_Actionbarsherlock_Android Loadermanager - Fatal编程技术网

Android ActionBarSherlock&x2B;地图+;Loaders=java.lang.NoClassDefFoundError

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)

编辑:有关详细操作方法,请查看

我已经挣扎了两天了,希望有人能帮我

我正在尝试将最新的ActionBarSherlock(4.0)与地图视图结合使用。我知道碎片有问题,但我在这个活动中不需要它们。但是我需要加载程序,而且为了使用加载程序,我还必须扩展碎片活动。没问题,我想,我们有皮特·道尔的消息。正如许多SO线程和Google组建议的那样,我使用android-support-v4-googlemaps JAR(实际上是android-support-v13-r7-googlemaps.JAR)而不是android-support-v4.JAR构建ABS。然后我用它作为我项目的库

现在,我希望我的活动是这样的:

公共类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的问题

  • 当我删除
    implements LoaderCallbacks
    部分时,它也可以工作,但这样我就无法使用LoaderManager


究竟为什么会出现NoClassDefFoundError错误,以及如何让加载程序在my MapCapableSherlocketEnabledFragmentActivity中工作?

您需要使用支持库中的加载程序,而不是平台中的加载程序。因为这些加载程序仅在Android 3.0+上可用,而且您已经将它们包含在您的类中定义将导致3.0之前的类加载器完全拒绝您的类。将您的导入切换到支持库变体应该是所有需要的

如果您查看Logcat中异常的上方,您应该会看到一个或多个VerifyErrors,这些错误将具体概述它的问题所在


您也只能在android 3.2及更高版本上使用
android-support-v13
库(因此在其名称中使用
v13

已弃用:我想问题不会再出现了。如果您决定使用弃用的v1,解决方案如下


因此,杰克回答了确切的问题,但我认为,对某些人来说,有一个或多或少详细的操作方法是很有用的。那么,如何让ActionBarSherlock与地图一起工作呢?

我假设你已经建立了ActionBarSherlock并作为一个库项目工作,你可以找到很多关于如何实现它的教程

如果您只想将MapActivity与ActionBarSherlock一起使用,那么很容易:

  • 下载杰克的地图
  • 将其放在应用程序的libs文件夹中,并将其包含在生成路径中
  • 如果要将MapView与碎片或装载器等蜂窝状功能结合使用,请执行以下操作:

  • 使用谷歌地图下载Pete Doyle的android支持包:
  • 制作一个jar(如果你下载预编译的jar,如果你不知道的话,只需将zip重命名为jar即可)
  • 在工作区中复制ActionBarSherlock库(命名为ActionBarSherlockMaps或类似的东西),只是为了不弄乱原始库,您可能需要稍后使用它或其他东西
  • 记住根据最新的谷歌API构建ActionBarSherlockMaps和你的项目。如果你使用没有谷歌API的常规Android 4.0.3,它将无法工作
  • 将jar(例如android-support-v13-r7-googlemaps.jar)放在新ActionBarSherlockMaps的libs文件夹中,从构建路径中排除android-support-v4.jar,并包括android-support-v13-r7-googlemaps.jar
  • 对于修订版7,您将在SherlockFragmentActivity的此步骤中遇到编译错误。请查找受保护的void supportInvalidateOptionsMenu(),并将其可见性更改为
    public
    (新版本的ABS不需要此步骤)
  • 将相同的jar放在项目的libs文件夹中,从构建路径中排除android-support-v4.jar,并包括android-support-v13-r7-googlemaps.jar
  • 确保将
    放入清单文件的应用程序标记中
  • 确保对片段、加载程序和其他内容使用正确的导入!您应该使用例如
    导入android.support.v4.app.LoaderManager;
    而不是
    导入android.app.LoaderManager;
  • 享受ActionBarSherlock+谷歌地图+片段+加载器的乐趣

  • 这是目前最好的解决办法,直到谷歌将地图放入兼容性库。我希望他们在4.*设备超过2.*之前完成这项工作…

    刚刚要写这篇文章。似乎是个问题。没错!我真不敢相信我忽略了这么明显的事情!非常感谢!顺便说一句,我使用的是皮特·多伊尔(Pete Doyle)的谷歌v13版本映射兼容性库,它也包括v4,所以我认为这不会是一个问题(当我切换导入时也不是)。啊,是的。它是一个添加(而不是完全替换)v4版本中包含一个特殊的寻呼机适配器,它更接近框架进行优化。只要您不使用它,您就会非常好。这非常好!虽然不需要使用ABS v4.2.0步骤#6(更改SupportInvalidateOptions功能表的可见性)。。。