无法实例化 android.gms.maps.MapFragment

Posted

技术标签:

【中文标题】无法实例化 android.gms.maps.MapFragment【英文标题】:Unable instantiate android.gms.maps.MapFragment 【发布时间】:2012-11-23 01:04:09 【问题描述】:

我尝试使用非常简单的活动使用 google maps android v2 进行演示,只需从 google 页面复制代码: https://developers.google.com/maps/documentation/android/start#adding_the_api_key_to_your_application

活动:

package com.example.mapdemo;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    

布局:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/map"
  android:layout_
  android:layout_
  class="com.google.android.gms.maps.MapFragment"/>

我已经根据页面申请了一个api密钥并修改了我的androidmanifest.xml文件,就像这样:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wenhai.driverschool"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.INTERNET" />

    <!-- add for map2 -->
    <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!-- External storage for caching. -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Maps API needs OpenGL ES 2.0. -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyDVAF4WaVSVRDKJx87It8OSFP5txQcPabc" />

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我还在 Eclipse 中将我的应用程序引用到 google-play-services_lib。

但每次,logcat 中的错误报告如下:

2-05 16:22:53.609: E/AndroidRuntime(21623): java.lang.RuntimeException: Unable to start activity ComponentInfocom.wenhai.driverschool/com.wenhai.driverschool.MainActivity: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Looper.loop(Looper.java:137)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.NativeStart.main(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 11 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:581)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:549)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.onCreateView(Activity.java:4235)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 20 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:571)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 23 more

我不知道这是什么原因。

如果我将google-play-services.jar添加到我的项目中,它会报告另一个错误:

12-05 16:34:23.269: E/AndroidRuntime(22638): FATAL EXCEPTION: main
12-05 16:34:23.269: E/AndroidRuntime(22638): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.onCreateView(Activity.java:4242)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Looper.loop(Looper.java:137)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at dalvik.system.NativeStart.main(Native Method)

有人可以帮我解决这个问题吗?

【问题讨论】:

我在使用 MapView 时遇到了同样的错误。我添加了库,并按照此页面 developers.google.com/maps/documentation/android/start 中的描述完成了所有操作,但所有这些对我来说都没用。 同样的错误..任何解决方案... 我遇到了同样的错误,还没有找到任何好的解决方案:( 查看这些步骤,因为我猜它尚未解决techhomeblog.wordpress.com/2013/02/23/… 尝试在 Eclipse 中右键单击您的项目,选择 Android 工具 > 添加支持库。就我而言,它是从 ActionBarSherlock 中提取的旧版本。 【参考方案1】:

在 IntelliJ IDEA 中(针对 IntelliJ 12 更新):

    创建一个包含class dummy 的文件~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.java。 文件->导入模块-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib 从现有源创建模块 下一步->下一步->下一步->下一步->完成 文件->项目结构->模块->YourApp +->Module Dependency->Google-play-services_lib(+ 按钮在对话框的右上角。) +->罐子或目录->~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar 使用/箭头将&lt;Module source&gt;移动到列表底部。

如果你愿意,你可以删除dummy.java

编辑:使用了一段时间后,我发现有一个小缺陷/错误。 IDEA 有时会抱怨无法打开google-play-services_lib 目录中的.iml 项目文件,尽管事实上您从未告诉它那里有一个项目。如果发生这种情况,重建项目可以解决问题,至少在它恢复之前是这样。

【讨论】:

嗨,我在Eclipse IDE 中找不到File &gt; Import Module 选项。请帮助我... 这是针对高级IDE“IntelliJ IDEA”的。 感谢您的回答!但是我在项目中添加模块和jar依赖就足够了,一切正常! 对于 Intellij 12 中的第 6 步,+ 按钮位于第三个窗格下方的左下方。 您不再需要添加虚拟文件,因为 Google Play 服务库已更新为“官方虚拟文件”以支持“某些 IDE”(即他们对 IntelliJ 和 Android Studio 进行了修复) .【参考方案2】:

更新

请关注 Commonsware MapV2 代码 sn-ps 以获得更好的理解。

(出现在综合版中)

https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2

在我的最后,跟随 sn-p 工作正常。我选择使用SupportMapFragment

别忘了将google-play-services.jar添加到您的项目中。

MainActivity.java

package com.example.newmapview;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;

public class MainActivity extends FragmentActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        SupportMapFragment fragment = new SupportMapFragment();
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, fragment).commit();
    

ma​​nifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.newmapview"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <permission
        android:name="com.example.newmapview.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.newmapview.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.newmapview.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="XXXXX" />
    </application>

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

</manifest>

这是结果

希望这会有所帮助。

【讨论】:

嗨,Vipul Shah,谢谢。我喜欢来自 concole 的消息:[2012-12-06 10:20:26 - google-play-services_lib] 找不到 google-play-services_lib.apk!我不知道这个apk丢失是否导致我的错误。你能告诉我如何引用 google-play-services.jar。只需像下面的链接一样添加它:developer.android.com/intl/zh-CN/tools/projects/…。或者像下面这样在eclipse中添加它:Propertyes->java Build Path->Projects,添加google-play-services_lib项目。哪一个在你身边?谢谢。 @mmm2006 我担心你可能在安卓模拟器上运行这个应用程序。我不确定,但你可能会遇到这个错误,因为模拟器上没有 Play 商店应用程序。在实际设备上试试。 事实上,我在手机中运行它。一部索尼手机。 嗨 Vipul,你能告诉我,如何使用 MapFragment 在地图上显示我的标记?我有一个纬度和经度列表,我想在地图上显示它们,我尝试了 MapView 但对我不起作用,所以我不能使用 ItemizedOverlay,MapFragment 工作,所以如何在 MapFragment 上显示多个标记。如果可能,请提供一个包含有效代码的链接。 @VipulShah:你是摇滚。你能告诉我为什么会出现这个错误,因为在它工作之前我已经开发了一些教程 ---> dj-android.blogspot.in/2013/02/… 现在相同的代码不起作用。跨度> 【参考方案3】:

尝试将您的布局替换为:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
       android:name="com.google.android.gms.maps.SupportMapFragment"
       android:layout_
       android:layout_ />

11岁以下需要使用SupportMapFragment for API!

奥雷尔

【讨论】:

对此很抱歉,但它也不能代替我。这次报错:Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.SupportMapFragment: 确保类名存在,是公开的,并且有一个公开的空构造函数。我可以在 jar 中找到 SupportMapFragment,但它无法工作。我不知道原因。 嗯,看来您需要这样做: 1. 在Android SDK Mananger 上下载Google Play Services SDK。 2、在Eclipse中导入项目库。 3. 将库添加到您的项目中。 4. 确保您的项目中有 android-support-v4.jar(也可在 Android SDK 管理器中找到)。 5. 创建一个片段并添加名称 ('class="com.google.android.gms.maps.MapFragment"/>' for SDK >= 11 and 'class="com.google.android.gms.maps.MapFragment "/>' 用于 SDK 好的。我发现我必须按照本指南来推荐谷歌播放服务。 developer.android.com/intl/zh-CN/tools/projects/…。但是谷歌提供的例子现在可以工作了。 :( 知道什么是 View Equivalent to the Framgament 将其放入片段 xml 文件中? @mmm2006:你需要扩展“FragmentActivity”而不是“Activity”然后它应该可以工作并且不会抛出异常..【参考方案4】:

我遇到了同样的问题,我花了两天时间才找到适合我的解决方案:

    删除项目google-play-services_lib(右键项目删除) 删除包含 Google 地图演示的项目(在我的例子中为 MainActivity)(如果有) 将项目 google-play-services_lib(extras\google\google_play_services\libproject\google-play-services_lib) 复制到您的工作区,然后将其作为常规项目导入(文件->导入->现有项目到工作区) 右键单击您的项目(要在其中加载地图)-> Android -> 添加(在库下)google-play-services_lib

你应该看到这样的东西:

注意:你不应该有这样的东西(项目应该从你的工作区引用):

我认为问题在于两个项目引用了同一个库

【讨论】:

我将google play服务添加为Java构建路径库,但需要在Android/Library下添加【参考方案5】:

试试这个

http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

我刚刚添加了google服务的项目,在我的项目属性中添加了引用->Android

【讨论】:

这对我来说是关键的修复,上面的其他答案都没有帮助。这里的区别实际上是非常微妙的——我是通过“Java Build Path”将它添加为一个依赖项目,而实际上我应该通过“Android”菜单来添加它。我已将该信息添加到我的其他答案之一:***.com/questions/13733911/…【参考方案6】:
    现在demo可以关注this link: 例如demo,也可以:

在项目的 libs 目录中添加两个 jar。按照以下信息。特别是,我认为您需要:

导入“google-play-services_lib”项目的实际源代码并将其链接为 Android 库。 通过项目 -> 属性 -> Android -> 库,添加 -> google-play-services_lib 执行此操作(您可以右键单击您的项目并选择属性,然后选择 Android)。 不要通过“Java 构建路径”为您的项目添加它作为依赖项目,这对我不起作用。 将 google-play-services.jar 和 android-support-v4.jar 添加到示例项目中的“libs”文件夹中,并在“构建路径->配置构建路径”中将它们添加为“外部外部 JAR”- > 图书馆”。

我发现第二步是必要的,因为我在尝试使用示例代码时遇到了与您完全相同的错误。第一步是避免在我的真实项目中出现 com.google.android.gms.R$styleable 中的 NoClassDefFoundError。

在示例代码运行之前,我还需要执行干净构建并从设备上卸载应用程序(来自早期的测试尝试)。

非常感谢您的帮助。

【讨论】:

【参考方案7】:

也许你必须强调这一点:

注意:Android 模拟器不支持 Google Play 服务 - 要使用 API 进行开发,您需要提供开发设备,例如 Android 手机或平板电脑。

http://developer.android.com/google/play-services/setup.html

您必须提供可以运行和调试应用的物理开发设备。不要使用模拟器。不会工作。

【讨论】:

天哪!为什么这个注释在主页上很少,而在每一页上都不是大红色?我几乎一整天都在试图让它运行!!!! Play Services 现在可在运行 Android v4.2.2 或更高版本的模拟器上使用。【参考方案8】:

在您的MainActivity 中(或在您想要放置 v2 地图的每个活动中)您必须扩展 FragmentActivityActivity 或者您想使用 SupportMapFragment 或只是 MapFragment。仅当您的目标是 API 12 及更高版本时才使用 MapFragment 类。否则,请使用SupportMapFragment。这是一个微妙的差异,但它会产生错误。

【讨论】:

【参考方案9】:

由于 Google 地图现在被包裹在 Fragments 下,因此从 FragmetActivity 扩展您的 Activity 而不仅仅是 Activity 并确保如果您使用“supportMapFragment”然后您是从 FragmetActivity 导入 Fragment strong>仅支持软件包。

【讨论】:

Google 应该真正修复基本示例以使用SupportMapFragment。没有它就不行……【参考方案10】:

在我的 Intellij Idea 项目中,我必须将 google-play-services_lib 和 google-play-services.jar 添加到项目中。并在 google-play-services_lib 项目中添加 google-play-services.jar 。在那之后,如果你做了所有事情,描述了here,对,你的应用程序应该可以工作了。

【讨论】:

你用什么分类的目录(类、jar目录、源码等)? 在 Intellij Idea 中,我将 google-play-services_lib 添加为模块。更重要的是,Intellij Idea 无法将其识别为模块,因为 src 文件夹是空的。您应该将带有任何代码的 java 文件添加到 src 文件夹中,然后从现有源创建模块并将其添加到项目结构中的项目中。然后清除java文件。【参考方案11】:

这有点困难,因为它在以前的 API 中有所不同,但我找到了解决方案。谷歌说要做什么here;根据我们需要com.google.android.gms 类的问题,因此有必要设置google play services,这只是一个库,我们必须像link 这样将其添加到我们的项目中。导入项目库google-play-services_lib 的副本而不是 sdk 文件夹中的副本非常重要。完成后,Google 的教程就完美了。

【讨论】:

您使用的 api 也很重要,api 10 或更少需要支持库developer.android.com/tools/extras/support-library.html 到底是你的错误?【参考方案12】:

除了前面提到的许多事情之外,对我来说,在 Order 和 Export 中标记 .jar 也很重要。据我所知,它通常不被提及,但对我来说至关重要。

【讨论】:

【参考方案13】:

与此建议有关:https://***.com/a/20215481/3080835

我还必须将此添加到清单中的Application 元素:

<meta-data 
           android:name="com.google.android.gms.version" 
           android:value="@integer/google_play_services_version" />

而且效果很好。

【讨论】:

【参考方案14】:

在 build.gradle 中添加这个依赖

compile 'com.google.android.gms:play-services:6.5.87'

现在可以了

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical">

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_
        android:layout_
        android:layout_weight="0.40" />
</LinearLayout>

【讨论】:

【参考方案15】:

要处理与 Drive 相关的导入,您需要来自 Google Drive SDK 的几个 jar。有一些较大的,因此您可能需要单独添加它们以适合您的应用。

如果这不能解决com.google.android.gms.* importsthe Google Play Services add-on needs to be installed (from Extras -&gt; Google Play Services in the SDK Manager) and google-play-services.jar needs to be added to your build path.

编辑:

在这种情况下,需要以下罐子:

google-api-services-drive-v2-rev1-1.7.2-beta.jar

google-http-client-1.10.3-beta.jar

google-http-client-android2-1.10.3-beta.jar

google-oauth-client-1.10.1-beta.jar

google-api-client-android2-1.10.3-beta.jar

google-api-client-1.10.3-beta.jar

【讨论】:

【参考方案16】:

我在装有 2.3.4 Android 的 LG-E730 上遇到了同样的问题。 在我在手机上更新 Google Play Service 之前出现错误。

【讨论】:

【参考方案17】:

不要忘记实际构建 google-play-services_lib!这就是为什么它显示“找不到 google-play....apk”。对我来说,在 Eclipse 上,不需要其他技巧,而是从 Android 子菜单引用项目,而不是从 Java 构建路径或项目引用或其他任何东西。没有手动放置的罐子,我实际上不需要任何东西。

【讨论】:

【参考方案18】:

在 Eclipse 中,需要为 google play 服务创建一个单独的项目,并将其作为一个 lib 从您的 Android 项目中引用,而不是简单地将 jar 添加到其中。在我的电脑中,我直接从 D:\adt-bundle-windows-x86-20130219\sdk\extras\google\google_play_services\libproject\google-play-services_lib 导入了 google play services Eclipse 项目并将其设置为 Lib 项目,所以我可以从我的 Android 项目中引用它。

【讨论】:

【参考方案19】:

在同一个教程中说明

请注意,下面的代码仅用于测试您的 面向 Android API 12 或更高版本的应用程序中的设置

只需将您的最低 SDK 版本更改为 12 即可使用

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

尚未尝试 Aurel 针对旧版本 API 的解决方法。

【讨论】:

【参考方案20】:

我认为值得一提的是(在我花了一个多小时拔掉头发之后),如果您使用 MapFragment,则不能使用 FragmentActivity(SupportMapFragment 在这种环境下可以正常工作)。我正准备放弃它。

【讨论】:

【参考方案21】:

第一步 http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject 第二步 http://developer.android.com/google/play-services/setup.html 在那个页面上它有一个注释,但我们没有注意

注意:您应该引用已复制到源代码树的库的副本——您不应引用 Android SDK 目录中的库。

但我认为这不是一个好的记录方式:)

【讨论】:

【参考方案22】:

这可能对某些人有所帮助。我有两个项目,一个是谷歌演示的副本,效果很好。另一个我复制到现有项目中,我根本无法运行它。在第二次失败中,我收到了上述错误消息。

我的问题是由于未启用库,即使我重新构建、导入多次等。右键单击项目 -> 属性 -> Java 构建路径 -> 订单和导出选项卡。在失败的项目中,未选中“Android Private Libraries”选项卡。

一旦我启用它,项目就可以正常工作了。

【讨论】:

【参考方案23】:

我拥有上面每个人所说的一切,并通过简单地调用 super.onCreate(savedInstanceState); 作为 oncreate 方法中的第一条指令;在它是方法的最后一行之前。 :| 浪费了一整天。

【讨论】:

【参考方案24】:

我遇到了这个问题,我只是更新了 Google Play 服务,并确保您将 google-play-service-lib 项目添加为依赖项,它现在可以在没有任何代码更改的情况下工作,但我仍然收到“Google Play 服务资源未找到。请检查您的项目配置以确保包含资源。”但这只发生在您设置了 setMyLocationEnabled(true) 时,有人知道为什么吗?

【讨论】:

【参考方案25】:

我没有得到真正的解决方案,但我在做这些事情后解决了它: - 导入 google-play-services_lib 时勾选“将项目复制到工作区” - 不要将 minSdkVersion 设置为低于 13 - 如果主题出现错误,请尝试将布局主题更改为任何系统主题 - 从头开始​​重新创建您的项目,或者如果您从某个地方获得它,则恢复所有内容

【讨论】:

【参考方案26】:

我遇到了同样的问题,只是从 SDK 安装了播放服务,所有问题都消失了。

【讨论】:

【参考方案27】:

我在活动中写了import com.google.android.gms.maps.SupportMapFragment;

Eclipse 给了我红色图标 > 点击 > 修复项目设置.. > 添加存档 google-play-services.jar

终于成功了!!

【讨论】:

【参考方案28】:

将 Google Play 服务添加到您的项目中

使 Google Play 服务 API 可用于您的应用:

按照此链接中的步骤操作:http://developer.android.com/google/play-services/setup.html#Setup

【讨论】:

【参考方案29】:

我在 Windows 7 64 位机器上使用 Android SDK for x86 时遇到了这个问题。我下载了 Android SDK 64 位版本,让 Eclipse 在 Window > Preferences > Android > SDK location 中看到它,问题停止发生。

【讨论】:

【参考方案30】:

请仔细阅读

如果一切都与谷歌代码一样,那么请检查清单文件,在我的情况下,我添加了地理键和地图键,这就是发生异常的原因,

注意 - 不要在清单文件中添加两个键删除映射键

meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_maps_key"/>

添加此代码。

 <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/auto_location"/>

 <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>

【讨论】:

以上是关于无法实例化 android.gms.maps.MapFragment的主要内容,如果未能解决你的问题,请参考以下文章

无法实例化页面(net.thucydides.core.webdriver.DriverConfigurationError:无法实例化类 io.appium.java_client.AppiumDr

无法实例化 p5.js 代码(实例模式)

无法实例化 NSManagedObject 的子类

无法在 main() 方法中实例化字段(实例变量)。为啥??爪哇

“无法实例化活动 ComponentInfo”代表啥?

由于以下原因无法实例化模块: