Невозможно создать экземпляр android.gms.maps.MapFragment

82

Я пытаюсь сделать демонстрацию с картами Google 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_width="match_parent"
  android:layout_height="match_parent"
  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>

Я также ссылаюсь на свое приложение на google-play-services_lib в eclipse.

но каждый раз отчет об ошибке в logcat выглядит следующим образом:

2-05 16:22:53.609: E/AndroidRuntime(21623): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.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)

Кто-нибудь может мне в этом помочь?

ммм2006
источник
2
У меня такая же ошибка с MapView. Я добавил библиотеку и сделал все, как описано на этой странице developers.google.com/maps/documentation/android/start, но все это было бесполезно для меня.
jumper0k 05
1
Та же ошибка .. любое решение ...
nilkash 03
1
У меня такая же ошибка, и я пока не могу найти хорошего решения :(
Рикардо Отеро
Чтобы увидеть эти шаги, я предполагаю, что его нерешенные, но еще не решенные, techhomeblog.wordpress.com/2013/02/23/…
Tofeeq Ahmad
Попробуйте щелкнуть правой кнопкой мыши свой проект в Eclipse, выбрать Инструменты Android> Добавить библиотеку поддержки. В моем случае это была устаревшая версия, взятая из ActionBarSherlock.
IgorGanapolsky

Ответы:

86

В IntelliJ IDEA (обновлено для IntelliJ 12):

  1. Создайте файл, ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.javaсодержащий class dummy {}.
  2. Файл-> Модуль импорта-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
  3. Создать модуль из существующих источников
  4. Далее-> Далее-> Далее-> Далее-> Готово
  5. Файл-> Структура проекта-> Модули-> Ваше приложение
  6. +-> Зависимость модуля-> Google-play-services_lib ( +кнопка находится в правом верхнем углу диалогового окна.)
  7. +-> Банки или каталоги->~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
  8. Используйте стрелки up/ downдля перехода <Module source>в конец списка.

Вы можете удалить, dummy.javaесли хотите.

Изменить: после использования этого в течение некоторого времени я обнаружил, что есть небольшая ошибка / ошибка. IDEA иногда будет жаловаться на то, что не может открыть .imlфайл проекта в google-play-services_libкаталоге, несмотря на то, что вы никогда не говорили, что там есть проект. Если это произойдет, перестройка проекта решит проблему, по крайней мере, до тех пор, пока она не вернется.

Тимммм
источник
3
привет, я не могу найти File > Import Moduleвариант в моем Eclipse IDE. Пожалуйста, помогите мне ...
Rahmathullah M
Это для превосходной IDE IntelliJ IDEA.
Timmmm 05
2
Спасибо за Ваш ответ! Но мне было достаточно добавить в проект зависимость модуля И jar, и все заработало!
lomza
На шаге 6 в Intellij 12 кнопка + находится в нижнем левом углу под третьей панелью.
Ник
3
Вам больше не нужно добавлять файл-пустышку, поскольку библиотека сервисов Google Play была обновлена ​​«официальным фиктивным файлом» для поддержки «некоторых IDE» (т.е. они сделали исправление для IntelliJ и Android Studio).
Guardius
33

Обновить

Следуйте фрагментам кода Commonsware MapV2, чтобы лучше понять.

(Присутствует в редакции Омнибуса)

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

Следующий фрагмент отлично работает на моей стороне. Я решил использовать 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();
    }
}

manifest.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>

Вот результат

введите описание изображения здесь Надеюсь, это поможет.

Випул
источник
привет, Випул Шах, спасибо. Мне нравится сообщение от 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 06
@ mmm2006 Я боюсь, что вы запускаете это приложение на эмуляторе Android. Я не уверен, но вы можете столкнуться с этой ошибкой, потому что на эмуляторе нет приложения магазина воспроизведения. Попробуйте его на реальном устройстве.
Vipul
Фактически, я запускаю его в своем телефоне. телефон sony.
mmm2006 07
Привет, Випул, не могли бы вы сказать мне, как я могу показать свои маркеры на карте с помощью MapFragment? У меня есть список широты и долготы, я хочу показать их на карте, я пробовал MapView, но у меня не получилось, поэтому я не могу использовать ItemizedOverlay, MapFragment сработал, поэтому как показать несколько маркеров на MapFragment. Если возможно, дайте мне ссылку с рабочим кодом.
Shrikant
@VipulShah: вы рок. Можете ли вы сказать мне, почему возникает эта ошибка, потому что до того, как она сработала, я разработал некоторые учебные материалы ---> dj-android.blogspot.in/2013/02/… теперь тот же код не работает.
Дхавал Пармар,
23

Просто попробуйте заменить свой макет на:

<?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_width="wrap_content"
       android:layout_height="match_parent" />

Вам необходимо использовать SupportMapFragment для API младше 11 лет!

Аурел

Аурел
источник
3
извините за это, но это тоже не может работать на моем месте. отчет об ошибке на этот раз: вызвано: android.app.Fragment $ InstantiationException: невозможно создать экземпляр фрагмента com.google.android.gms.maps.SupportMapFragment: убедитесь, что имя класса существует, является общедоступным и имеет открытый общедоступный конструктор. Я могу найти SupportMapFragment в jar, но он не может работать. я не знаю причины.
mmm2006 06
Хм, похоже, что нужно сделать что-то вроде этого: 1. Загрузите SDK Google Play Services в Android SDK Mananger. 2. Импортируйте библиотеку проекта в Eclipse. 3. Добавьте библиотеку в свой проект. 4. Убедитесь, что в вашем проекте есть файл android-support-v4.jar (также доступен в Android SDK Manager). 5. Создайте фрагмент и добавьте имя ('class = "com.google.android.gms.maps.MapFragment" />' для SDK> = 11 и 'class = "com.google.android.gms.maps.MapFragment. "/>" для SDK <11). 6. Не забудьте попробовать образец кода на устройстве (вашему приложению нужен Google Play!)
Аурел,
Хорошо. Я обнаружил, что должен следовать этому руководству, чтобы обратиться к сервису Google Play. developer.android.com/intl/zh-CN/tools/projects/… . но пример, предоставленный Google, еще может работать. :(
mmm2006 07
есть идеи, что такое представление, эквивалентное Framgament, чтобы поместить его в XML-файл фрагментов?
Harsha MV
1
@ mmm2006: вам нужно расширить "FragmentActivity", а не "Activity", тогда он должен работать и не будет генерировать исключение ..
Veer
17

Я столкнулся с той же проблемой, и мне потребовалось несколько дней, чтобы найти решение, которое сработало для меня:

  1. Удалите проект google-play-services_lib(щелкните правой кнопкой мыши на удалении проекта)
  2. Удалите проект, содержащий демонстрацию карт Google ( MainActivityв моем случае), если она у вас есть
  3. Скопируйте проект google-play-services_lib (extras \ google \ google_play_services \ libproject \ google-play-services_lib) в свою рабочую область, затем импортируйте его как общий проект (Файл-> импорт-> существующие проекты в рабочую область)
  4. Щелкните правой кнопкой мыши свой проект (в который вы хотите загрузить карту) -> Android -> добавить (в библиотеке) google-play-services_lib

Вы должны увидеть что-то вроде этого:

обратите внимание на

Примечание: у вас не должно быть чего-то подобного (проект должен быть указан из вашей рабочей области):

введите описание изображения здесь

Я думаю, что проблема в том, что буксирные проекты ссылаются на одну и ту же библиотеку

зизуджаб
источник
Я добавлял сервисы Google Play в качестве библиотеки путей сборки Java, но их нужно было добавить в Android / Library
marimaf
10

попробуй это

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

Я только что добавил проект сервисов Google и добавил ссылку в свойстве проекта-> Android

Гильерме Мунис
источник
2
Это было критическое исправление для меня, ни один из других ответов выше не помог. Разница здесь на самом деле довольно тонкая - я добавлял его как зависимый проект через «Java Build Path», тогда как на самом деле я должен был делать это через меню «Android». Я добавил эту информацию к одному из своих других ответов: stackoverflow.com/questions/13733911/…
Дэн Дж
8
  1. К настоящему моменту демоверсия может работать по этой ссылке :
  2. Например, демо, тоже может работать:

Добавьте два jar-файла в каталог libs вашего проекта. Следуйте информации ниже. В частности, я считаю, что вам необходимо:

  • Импортируйте исходный код проекта google-play-services_lib и свяжите его как библиотеку Android.
    • Сделайте это через Project -> Properties -> Android -> Library, Add -> google-play-services_lib (вы можете щелкнуть правой кнопкой мыши свой проект и выбрать Properties, затем выбрать Android).
    • Не добавляйте его как зависимый проект через «Путь сборки Java» для вашего проекта, это не сработало для меня.
  • Добавьте файлы google-play-services.jar и android-support-v4.jar в папку «libs» в примере проекта и добавьте их как «External External JARs» в «Путь сборки -> Настроить путь сборки -> Библиотеки». .

Я обнаружил, что этот второй шаг был необходим, поскольку я сталкивался с той же ошибкой, что и вы, при попытке использовать образец кода. Первый шаг был необходим, чтобы избежать ошибки NoClassDefFoundError в com.google.android.gms.R $ в моем реальном проекте.

Мне также нужно было выполнить чистую сборку и удалить приложение с устройства (из более ранней тестовой попытки), прежде чем образец кода сработает.

большое спасибо за вашу помощь.

ммм2006
источник
3

Возможно, вам стоит выделить это:

Примечание. Сервисы Google Play не поддерживаются в эмуляторе Android - для разработки с использованием API вам необходимо предоставить устройство разработки, например телефон или планшет Android.

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

Вы должны предоставить физическое устройство разработки, на котором вы можете запускать и отлаживать свое приложение. Не используйте эмулятор. Не будет работать.

хамелеон
источник
3
О, МОЙ БОГ! Почему этой заметки так мало на главной странице и не так много красного на каждой странице? Я просто трахался почти целый день, пытаясь запустить это !!!!
шмула
Сервисы Play теперь доступны на эмуляторах под управлением Android 4.2.2 или выше.
Брайан Уайт
2

В вашем MainActivity(или в каждом действии, которое вы хотите разместить карту v2) вы должны расширить FragmentActivityилиActivity как вы хотите использовать SupportMapFragmentили просто MapFragment. Используйте MapFragmentкласс, только если вы ориентируетесь на API 12 и выше. В противном случае используйте SupportMapFragment. Это небольшая разница, но она приводит к ошибке.

Шеддад
источник
2

Поскольку карта Google теперь обернута в Fragments, расширьте свою активность из FragmetActivity, а не только Activity, и убедитесь, что если вы используете « supporrtMapFragment », то вы импортируете фрагмент только из пакета поддержки .

Пратап Сингх
источник
Google действительно следует исправить базовый пример, чтобы использовать расширение SupportMapFragment. Без него не работает ...
Музикант 01
1

В моем проекте Intellij Idea мне пришлось добавить в проект оба: google-play-services_lib и google-play-services.jar. И в проекте google-play-services_lib добавьте также google-play-services.jar. После этого, если вы сделали все, что описано здесь , верно, ваше приложение должно работать.

jumper0k
источник
Какую категорию вы используете для каталога (классы, каталог jar, источники и т. Д.)?
Timmmm
1
В Intellij Idea я добавляю google-play-services_lib как модуль. Более того, Intellij Idea не распознает его как модуль, потому что папка src пуста. Вам необходимо добавить java-файл с любым кодом в папку src, после чего создать модуль из существующих источников и добавить его в проект в структуре проекта. Затем очистите файл java.
jumper0k 06
1

Это было немного сложно, потому что в предыдущем API все было иначе, но я нашел решение. Google говорит, что здесь делать ; в соответствии с вопросом, нам нужны com.google.android.gmsклассы, поэтому необходимо настроить google play services, это просто библиотека, которую мы должны добавить в наш проект, как эта ссылка . Очень важно импортировать копию библиотеки проекта, а google-play-services_libне ту, что находится в папке sdk. Как только это будет сделано, учебник от Google будет идеальным.

joseph.dev89
источник
Также важно, какой api вы используете, api 10 или меньше нужна библиотека поддержки developer.android.com/tools/extras/support-library.html, в чем именно заключается ваша ошибка?
joseph.dev89
1

Помимо многих вещей, упомянутых ранее, для меня было важно отметить .jar также в порядке и экспорте. Насколько я могу судить, обычно не упоминается, и для меня это было очень важно.

Пометьте библиотеку в порядке и экспорте

АльвароСантистебан
источник
1

относятся к этому предложению: https://stackoverflow.com/a/20215481/3080835

также мне пришлось добавить это к Applicationэлементу в манифесте:

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

и это сработало отлично.

user3080835
источник
1

Добавьте эту зависимость в 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_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="388dp"
        android:layout_weight="0.40" />
</LinearLayout>
Юбарадж Пудель
источник
0

Чтобы позаботиться об импорте, связанном с Диском, вам понадобится несколько банок из Google Drive SDK . Есть несколько больших, поэтому вы можете добавить их индивидуально, чтобы они соответствовали вашему приложению.

Если это не решит проблему com.google.android.gms.* imports,the Google Play Services add-on needs to be installed (from Extras -> 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

Бхавеш Патадия
источник
0

У меня была такая же проблема на моем LG-E730 с 2.3.4 Android. Ошибка появляется до того, как я обновил сервис Google Play на своем телефоне.

Ленивая борода
источник
0

Не забудьте создать google-play-services_lib !! Вот почему показывает "Не удалось найти google-play .... apk". Для меня в Eclipse не требовалось никаких других хаков, кроме ссылки на проект из подменю Android, а не из пути сборки Java, ссылок на проекты или чего-то еще. Никаких ручных банок, мне вообще ничего не понадобилось.

аннук
источник
0

В Eclipse необходимо создать отдельный проект для сервисов Google Play и ссылаться на него как на библиотеку из вашего проекта Android, а не просто добавлять к нему jar. На своем компьютере я импортировал проект Eclipse служб Google Play непосредственно из D: \ adt-bundle-windows-x86-20130219 \ sdk \ extras \ google \ google_play_services \ libproject \ google-play-services_lib и установил его в проект Lib, поэтому я мог ссылаться на него из моего проекта Android.

Пиовезан
источник
0

В том же руководстве говорится, что

Обратите внимание, что приведенный ниже код полезен только для тестирования ваших настроек в приложении, ориентированном на Android API 12 или более поздней версии.

Просто измените минимальную версию SDK на 12, и она будет работать

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

Haven еще не пробовал обходной путь Aurel для более старых версий API.

Эрикн
источник
0

Я думаю, стоит упомянуть (после того, как я потратил более часа на выдергивание волос), что если вы используете MapFragment, вы не можете использовать FragmentActivity (SupportMapFragment будет нормально работать в этой среде). Я был почти готов отказаться от этого.

Nicmoon
источник
0

Первый шаг http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject Второй шаг http://developer.android.com/google/play-services/setup.html На этой странице есть ПРИМЕЧАНИЕ но мы не обратили внимания

Примечание. Вы должны ссылаться на копию библиотеки, которую вы скопировали в свое исходное дерево - вы не должны ссылаться на библиотеку из каталога Android SDK.

Но я думаю, что это не лучший способ документации :)

Джордж Нгуен
источник
0

Кому-то это может помочь. У меня было два проекта, один из которых был копией демонстрационной версии от Google и работал нормально. Другой я скопировал в существующий проект, и мне вообще не удалось его запустить. А во втором неудачном я получил сообщение об ошибке, описанное выше.

Моя проблема возникла из-за того, что библиотека не активирована, хотя я перестраивал, импортировал несколько раз и т. Д. Щелкните правой кнопкой мыши проект -> Свойства -> Путь сборки Java -> вкладка Заказ и экспорт. В неудачном проекте вкладка «Частные библиотеки Android» не отмечена.

Как только я его включил, проект заработал нормально.

dubman23
источник
0

у меня было все, что говорили все выше, и я решил ошибку, просто вызвав super.onCreate(savedInstanceState);первую инструкцию в методе oncreate; до того, как это была последняя строка в методе. : | потратил впустую целый день.

Awais
источник
0

У меня эта проблема, я просто обновляю сервисы Google Play и убеждаюсь, что вы добавляете проект google-play-service-lib в качестве зависимости, теперь он работает без изменения кода, но я все еще получаю сообщение «Ресурсы сервисов Google Play не найдены. . Проверьте конфигурацию вашего проекта, чтобы убедиться, что ресурсы включены. " но это происходит только тогда, когда у вас установлен setMyLocationEnabled (true), кто-нибудь знает почему?

eOnOe
источник
0

Я не получил истинного решения, но решил его после следующих действий:
- Отметьте «Копировать проекты в рабочую область» при импорте google-play-services_lib
- Не устанавливайте minSdkVersion ниже 13
- Если у вас возникла ошибка с темой, попробуйте изменение темы макета на любую системную тему
- воссоздайте свой проект с нуля или верните все, если получите его откуда-то

Ван Хунг
источник
0

У меня такая же проблема, я просто установил Play Services из SDK, и все проблемы улетели.

Харша
источник
0

Я написал в деятельности
import com.google.android.gms.maps.SupportMapFragment;

и Eclipse дал мне красный значок> щелкните> исправить настройку проекта ..> добавить архив google-play-services.jar

И, наконец, это сработало !!

Holyna
источник
0

Я столкнулся с этой проблемой при использовании Android SDK для x86 на 64-разрядной машине с Windows 7. Я загрузил 64-разрядную версию Android SDK, заставил Eclipse увидеть ее в Window> Preferences> Android> SDK location, и проблема перестала возникать.

Пиовезан
источник
0

Пожалуйста, прочтите внимательно

Если все работает так же, как код Google, проверьте файл манифеста, в моем случае я добавил географический ключ и ключ карты, поэтому возникает исключение,

Примечание. Не добавляйте два ключа в файл манифеста. Удалите ключ карты.

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"/>
Йогеш Рати
источник