Невозможно создать экземпляр 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)

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


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 $ в моем реальном проекте.

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

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


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. После этого, если вы сделали все, что описано здесь , верно, ваше приложение должно работать.


Какую категорию вы используете для каталога (классы, каталог 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 будет идеальным.


Также важно, какой 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" />

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


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

Не забудьте создать 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 будет нормально работать в этой среде). Я был почти готов отказаться от этого.


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» не отмечена.

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


0

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


0

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


0

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


0

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


0

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

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

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



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"/>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.