Android Google Maps API „Fehler beim Aufblasen des Klassenfragments“ [Duplikat]
-
21-12-2019 - |
Frage
Ich bin neu in der Android-Entwicklung und habe mit etwas Einfachem begonnen: Ich habe einfach eine Karte angezeigt, die sich auf meinen Wohnort konzentriert.Ich habe viele Dinge versucht, um mein Problem zu lösen, aber ohne Erfolg. Ich lasse hier meinen Code und das Fehlerprotokoll.Ich wäre Ihnen wirklich dankbar, wenn Sie mir helfen können ;]
Fehler beim Aufblasen des Klassenfragments:
01-10 03:04:51.632: E/AndroidRuntime(1366): FATAL EXCEPTION: main
01-10 03:04:51.632: E/AndroidRuntime(1366): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.lineapp.tofind/br.com.lineapp.tofind.MapActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.os.Handler.dispatchMessage(Handler.java:99)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.os.Looper.loop(Looper.java:137)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.ActivityThread.main(ActivityThread.java:5103)
01-10 03:04:51.632: E/AndroidRuntime(1366): at java.lang.reflect.Method.invokeNative(Native Method)
01-10 03:04:51.632: E/AndroidRuntime(1366): at java.lang.reflect.Method.invoke(Method.java:525)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-10 03:04:51.632: E/AndroidRuntime(1366): at dalvik.system.NativeStart.main(Native Method)
01-10 03:04:51.632: E/AndroidRuntime(1366): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.Activity.setContentView(Activity.java:1895)
01-10 03:04:51.632: E/AndroidRuntime(1366): at br.com.lineapp.tofind.MapActivity.onCreate(MapActivity.java:14)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.Activity.performCreate(Activity.java:5133)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
01-10 03:04:51.632: E/AndroidRuntime(1366): ... 11 more
01-10 03:04:51.632: E/AndroidRuntime(1366): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4030500 but found 0. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.maps.internal.q.v(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.maps.internal.q.u(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.maps.MapFragment$b.cE(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.maps.MapFragment$b.a(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.dynamic.a.a(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.dynamic.a.onInflate(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.app.Activity.onCreateView(Activity.java:4745)
01-10 03:04:51.632: E/AndroidRuntime(1366): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
01-10 03:04:51.632: E/AndroidRuntime(1366): ... 21 more
Hauptaktivität:
package br.com.lineapp.tofind;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
//import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void verMapa(View v){
Intent iVerMapa = new Intent(MainActivity.this,MapActivity.class);
startActivity(iVerMapa);
}
/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} */
}
MapActivity:
package br.com.lineapp.tofind;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
public class MapActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_2find);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Layout – acitivity_main:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EEE9E9"
>
<LinearLayout
android:id="@+id/layoutPrincial"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp">
<ImageView
android:id="@+id/mapaLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:src="@drawable/mapa"
android:layout_marginBottom="20dp" />
<LinearLayout
android:id="@+id/layoutBotoes"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:layout_marginBottom="20dp">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/map"
android:background="#00FF7F"
android:layout_marginBottom="10dp"
android:onClick="verMapa" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/contatos"
android:background="#00FF7F"
android:layout_marginBottom="10dp" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/sair"
android:background="#00FF7F"
android:layout_marginBottom="10dp" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Layout - map_2find:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutMap"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/mano"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/mano"
android:name="com.google.android.gms.maps.MapFragment"
/>
</RelativeLayout>
AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.lineapp.tofind"
android:versionCode="1"
android:versionName="1.0" >
<permission
android:name="br.com.lineapp.tofind.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="br.com.lineapp.tofind.permission.MAPS_RECEIVE"/>
<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="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.maps.API_KEY"
android:value="My_API_KEY"/>
<activity
android:name="br.com.lineapp.tofind.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>
<activity
android:name="br.com.lineapp.tofind.MapActivity"
android:label="@string/app_name" >
</activity>
</application>
</manifest>
Lösung
Überprüfen Sie dies
Ein erforderliches Metadaten-Tag in der AndroidManifest.xml Ihrer App ist nicht vorhanden.
Abgesehen davon
<uses-sdk
android:minSdkVersion="8"
Also ändern
android:name="com.google.android.gms.maps.MapFragment"
Zu
android:name="com.google.android.gms.maps.SupportMapFragment"
Entfernen Sie auch dieses
<permission
android:name="br.com.lineapp.tofind.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
und das
<uses-permission android:name="br.com.lineapp.tofind.permission.MAPS_RECEIVE"/>
nicht benötigt
Referenz:
https://developers.google.com/maps/documentation/android/start