android - 在旧设备上支持 Google Maps Android API v2 (gingerbread)

标签 android google-maps-android-api-2

更新:

在我的 Android SDK 管理器中,我安装了 Android 支持库。在我的 Downloads/android-sdk-macosx/extras/android/support 目录中,我有一个 v4、一个 v7 和一个 v13。我将 android-support-v4.jar 复制到 libs 文件夹中。右键单击并选择 Build Path > Configure Build Path。在 Activity 布局中,我添加了以下内容(使用 supportmapfragment 而不是 mapfragment):

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/map" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  class="com.google.android.gms.maps.SupportMapFragment"/> 

但我仍然得到这个错误:

04-16 17:42:00.928: E/AndroidRuntime(363): FATAL EXCEPTION: main 
04-16 17:42:00.928: E/AndroidRuntime(363): 
java.lang.RuntimeException: 
Unable to start activity ComponentInfo{com.otl.AndroidRemoteApp1/ 
com.otl.AndroidRemoteApp.ShowMapActivity}: 
android.view.InflateException: Binary XML file line #6: Error 
inflating class fragment 

这是完整的轨迹:

04-18 10:33:32.075: E/AndroidRuntime(368): FATAL EXCEPTION: main
04-18 10:33:32.075: E/AndroidRuntime(368): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.otl.AndroidRemoteApp1/com.otl.AndroidRemoteApp.ShowMapActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.os.Looper.loop(Looper.java:130)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.app.ActivityThread.main(ActivityThread.java:3683)
04-18 10:33:32.075: E/AndroidRuntime(368):  at java.lang.reflect.Method.invokeNative(Native Method)
04-18 10:33:32.075: E/AndroidRuntime(368):  at java.lang.reflect.Method.invoke(Method.java:507)
04-18 10:33:32.075: E/AndroidRuntime(368):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-18 10:33:32.075: E/AndroidRuntime(368):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-18 10:33:32.075: E/AndroidRuntime(368):  at dalvik.system.NativeStart.main(Native Method)
04-18 10:33:32.075: E/AndroidRuntime(368): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-18 10:33:32.075: E/AndroidRuntime(368):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.app.Activity.setContentView(Activity.java:1657)
04-18 10:33:32.075: E/AndroidRuntime(368):  at com.otl.AndroidRemoteApp.ShowMapActivity.onCreate(ShowMapActivity.java:45)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
04-18 10:33:32.075: E/AndroidRuntime(368):  ... 11 more
04-18 10:33:32.075: E/AndroidRuntime(368): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.otl.AndroidRemoteApp1-2.apk]
04-18 10:33:32.075: E/AndroidRuntime(368):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
04-18 10:33:32.075: E/AndroidRuntime(368):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
04-18 10:33:32.075: E/AndroidRuntime(368):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.view.LayoutInflater.createView(LayoutInflater.java:471)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
04-18 10:33:32.075: E/AndroidRuntime(368):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
04-18 10:33:32.075: E/AndroidRuntime(368):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
04-18 10:33:32.075: E/AndroidRuntime(368):  ... 20 more

有什么想法吗?

最佳答案

MapFragment API Level 12以后才支持,推荐使用SupportMapFragment相反。

要使用它,您需要将 Android 支持库包含在您的路径中。关注这些instructions将支持库添加到您的项目中。

更新:

此外,Fragment类在 API 级别 11 之前不可用。我相信您的目标是 Gingerbread,它是 API 级别 10。这就是您收到以下错误的原因:

引起:java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader

查看此 Question , 它看起来是一个类似的问题。

关于android - 在旧设备上支持 Google Maps Android API v2 (gingerbread),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063761/

相关文章:

android - 使用 moshi 转换 HashMap

android - 基于主题的LinearLayout背景

Android Maps Spherical Util Distance

java - Google Maps Android API 如何检查是否达到配额限制?

android - 隐藏在透明拆分操作栏后面的 Google 标题 Google Maps API v2

android - 如何在 map 上跟踪和显示用户的位置

java - Realm 模型关系

android - 已弃用的 REST API - android

安卓2.2。如何设置串口(com、rfcomm)端口?

android - 在来自 URL Google Maps Android API 的信息窗口中显示图像