Ошибка при раздувании XML в фрагменте Google maps

Пытаясь отобразить карту Google, используя фрагмент. В качестве учебника использовалась следующая страница .

Я получаю исключение «Ошибка размножения фрагмента класса».

1) Импортировал банку google-play-services.jar

2) загрузил и настроил SDK служб Google Play.

3) получил последний ключ API v2.

4) В манифесте добавлено разрешение com.google.android.providers.gsf.permission.READ_GSERVICES.

5) используя mindsdk = 8 и target = 16.

Для справки Androidmanifest.xml :

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.com.mapsdemo" android:versionCode="1" android:versionName="1.0" > <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <permission android:name="com.example.com.mapsdemo.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.com.mapsdemo.permission.MAPS_RECEIVE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.com.mapsdemo.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="AIzaSyDXPsxWF634gd907NzZKkRkNS0oH9IPWgk"/> </application> 

MainActivity.java

 package com.example.com.mapsdemo; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.Toast; import com.google.android.gms.common.GooglePlayServicesUtil; //API : AIzaSyDXPsxWF634gd907NzZKkRkNS0oH9IPWgk public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { setContentView(R.layout.activity_main); } catch (Exception e) { Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

activity_main.xml

 <?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"/> 

Трассировка стека ошибок:

 01-05 03:51:46.260: E/YOUR_APP_LOG_TAG(19189): at com.example.com.mapsdemo.MainActivity.onCreate(MainActivity.java:22) 01-05 03:52:31.135: E/AndroidRuntime(19446): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.com.mapsdemo/com.example.com.mapsdemo.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 01-05 03:52:31.135: E/AndroidRuntime(19446): at com.example.com.mapsdemo.MainActivity.onCreate(MainActivity.java:22) 01-05 03:57:43.745: E/AndroidRuntime(19781): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.com.mapsdemo/com.example.com.mapsdemo.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 01-05 03:57:43.745: E/AndroidRuntime(19781): at com.example.com.mapsdemo.MainActivity.onCreate(MainActivity.java:22) 01-05 03:58:15.737: E/YOUR_APP_LOG_TAG(19886): at com.example.com.mapsdemo.MainActivity.onCreate(MainActivity.java:22) 

Logcat:

 01-02 18:31:21.477: I/jdwp(11473): Ignoring second debugger -- accepting and dropping 01-02 18:31:24.493: D/libEGL(11871): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so 01-02 18:31:24.493: D/libEGL(11871): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so 01-02 18:31:24.509: D/libEGL(11871): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so 01-02 18:31:24.602: D/OpenGLRenderer(11871): Enabling debug mode 0 

Error inflating class fragment обычно возникает, когда вы пытаетесь использовать встроенную версию фрагментов API уровня 11, которую выполняет ваш исходный код, но пытаетесь запустить ее на старой версии Android. Чтобы использовать <fragment> на уровне API 10 и ниже, вы должны использовать backport фрагментов Android Support:

  • Добавьте пакет поддержки Android в свой проект
  • Наследует от FragmentActivity вместо Activity
  • Используйте SupportMapFragment а не MapFragment
  • Изменить что-нибудь еще, что теперь отличается на основе этого резервного

Или вы можете установить свой android:minSdkVersion на 11 или выше и запустить свой текущий код только на более новых устройствах.

Подробную информацию о пакете поддержки Android можно найти в документации .

У меня была такая же ошибка. Убедитесь, что вы запустили его на реальном устройстве. Загрузите библиотеку сервисов Google Play следующим образом. Project_properties-> android-> Library затем добавьте google play lib там ..

Снова создайте папку libs, скопируйте поддержку android v4.jar и google_play_services.jar, а затем щелкните правой кнопкой мыши на каждый файл и выберите build to path ..

Также проверьте свой api-ключ для com.example.com.mapsdemo package..for каждого пакета новый ключ api будет создан ..

И вместо этого используйте SupportMapFragment вместо MapFragment в вашем XML-файле.

Это решило мою проблему.

Надеюсь, это решит вашу проблему.

Много вопросов по этой проблеме, и через три дня мое решение прост: вы должны скомпилировать свой проект с помощью Project Build Target Google API. Мне так глупо об этом.