Google Maps API - Level-2- Sample-Code - Android Studio
Ich versuche, führen Sie das Beispiel Google Maps Android API v2, finden Sie auf dieser Seite in Android Studio.
Meine Frage ist, warum bin ich immer die android.view.InflateException: Binary XML file line #2: Error inflating class fragment
gezeigt, in der logcat unten?
Umgebung:
IDE: Android Studio 1.0.1
Gerät: Galaxy Nexus, Android version 4.2.1
Habe ich schaute auf die Fragen und versucht, die vorgeschlagenen Lösungen aber nichts hat funktioniert.
Meisten anderen Fragen wurden mit einem FragmentActivity
nötig und eine SupportMapFragment
aber ich bin mit einem normalen Activity
und MapFragment
wie im Beispiel dargestellt auf der web-Seite. Ich bin mit einem minimum API level 15, so dachte ich, die FragmentActivity
und SupportMapFragment
waren nicht erforderlich.
Habe ich kopiert die Beispiel-code direkt aus dem web Seite.
Den Fehler aus dem logcat. (Nur das erste bit).
02-12 19:59:49.496 23891-23891/edu.utexas.scottm.googlemapsapi_2_demo E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.utexas.scottm.googlemapsapi_2_demo/edu.utexas.scottm.googlemapsapi_2_demo.SimpleMapActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
Layout-Datei activity_simple_map.xml (kopiert aus der web-Seite zitiert)
<?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"
android:name="com.google.android.gms.maps.MapFragment"/>
Aktivität (kopiert von der Webseite zitiert)
package edu.utexas.scottm.googlemapsapi_2_demo;
import android.app.Activity;
import android.os.Bundle;
public class SimpleMapActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple_map);
}
}
Die manifest-Datei (mit meinem Google MAPS-API-Schlüssel zu entfernen).
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.utexas.scottm.googlemapsapi_2_demo" >
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<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"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".SimpleMapActivity"
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.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.MY_API_KEY"
android:value="MY_API_KEY"/>
</application>
</manifest>
Den build.gradle-Datei für das Modul: app
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "edu.utexas.scottm.googlemapsapi_2_demo"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.google.android.gms:play-services:6.5.87'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}
Erstellt habe ich ein Android-Studio-Projekt aus den Google Play Services-Beispiel-apps gefunden, in \android-sdk\extras\google\google_play_services\samples\maps und es funktioniert auf dem Gerät, aber dies nutzt FragmentActivity
und SupportMapFragment
.
Jegliche Hilfe würde sehr geschätzt werden.
Ganze logcat im Falle Bedarf:
02-12 19:59:49.496 23891-23891/edu.utexas.scottm.googlemapsapi_2_demo E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.utexas.scottm.googlemapsapi_2_demo/edu.utexas.scottm.googlemapsapi_2_demo.SimpleMapActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
at android.app.Activity.setContentView(Activity.java:1881)
at edu.utexas.scottm.googlemapsapi_2_demo.SimpleMapActivity.onCreate(SimpleMapActivity.java:12)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
at com.google.maps.api.android.lib6.gmm6.c.g.a(Unknown Source)
at com.google.maps.api.android.lib6.c.i.a(Unknown Source)
at com.google.maps.api.android.lib6.c.el.a(Unknown Source)
at com.google.maps.api.android.lib6.c.ab.a(Unknown Source)
at com.google.maps.api.android.lib6.c.aa.a(Unknown Source)
at com.google.android.gms.maps.internal.x.onTransact(SourceFile:107)
at android.os.Binder.transact(Binder.java:310)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown Source)
at com.google.android.gms.maps.MapFragment$a.onCreateView(Unknown Source)
at com.google.android.gms.dynamic.a$4.b(Unknown Source)
at com.google.android.gms.dynamic.a.a(Unknown Source)
at com.google.android.gms.dynamic.a.onCreateView(Unknown Source)
at com.google.android.gms.maps.MapFragment.onCreateView(Unknown Source)
at android.app.Fragment.performCreateView(Fragment.java:1695)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:861)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1137)
at android.app.Activity.onCreateView(Activity.java:4717)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
at android.app.Activity.setContentView(Activity.java:1881)
at edu.utexas.scottm.googlemapsapi_2_demo.SimpleMapActivity.onCreate(SimpleMapActivity.java:12)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
- Bitte überprüfen Sie stackoverflow.com/questions/15693975/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nahm einen genaueren Blick in die logcat und gefunden:
War das problem in dem manifest.
Legte ich meinen API-key am Ende des
com.google.android.maps.v2.
anstatt es alsNicht Lesen Sie die Anweisungen auf der web-Seite, die eng genug. Sie werden deutlich:
Ersetzen Sie Ihren API-Schlüssel für API_KEY in das value-Attribut.
Doh.
Verwenden FragmentActivity statt Aktivität
Ich bin mir nicht sicher, ob ich helfen kann mit dem Fehler, aber dieser link scheint zu passen Ihre Bedürfnissen. Ich habe es vor kurzem für eine app, die ich erstellt und Sie erklärt alles sehr gut. Es verwendet ein fragment aus einer Tätigkeit. Hoffe, es hilft!
http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html
Haben Sie drei Probleme in dem code, den dein logcat vorschlagen:
android:value="MY_API_KEY"
im manifest.xml Datei.Ändern Sie Ihre java-Datei:
Ihre .xml-Datei:
Hoffe, das Hilft!!