0

Ich habe im Internet gesucht und finde keine Antwort, die für mich funktioniert. Ich habe kürzlich ein neues Projekt im Android Simulator erstellt und das Google Maps Template ausgewählt. Ich folgte den Anweisungen unter https://developers.google.com/maps/documentation/android-api/start, um sicherzustellen, dass ich beim ersten Mal alles richtig gemacht hatte. Zu meiner Schande bekomme ich den gleichen Fehler.Google Maps Fehler beim Aufblasen von Klassenfragmenten Android

Zum einen ist hier mein MapsActivity.java:

import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 


    /** 
    * Manipulates the map once available. 
    * This callback is triggered when the map is ready to be used. 
    * This is where we can add markers or lines, add listeners or move the camera. In this case, 
    * we just add a marker near Sydney, Australia. 
    * If Google Play services is not installed on the device, the user will be prompted to install 
    * it inside the SupportMapFragment. This method will only be triggered once the user has 
    * installed Google Play services and returned to the app. 
    */ 
    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     // Add a marker in Sydney and move the camera 
     LatLng sydney = new LatLng(-34, 151); 
     mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
    } 
} 

Zweitens meine activity_maps.xml:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.xenicdev.mapstest.MapsActivity" /> 

Und schließlich mein Fehler:

05-13 19:47:40.542 3052-3052/com.xenicdev.mapstest E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.xenicdev.mapstest, PID: 3052 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xenicdev.mapstest/com.xenicdev.mapstest.MapsActivity}: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class fragment 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class fragment 
at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 
at android.app.Activity.setContentView(Activity.java:2166) 
at com.xenicdev.mapstest.MapsActivity.onCreate(MapsActivity.java:20) 
at android.app.Activity.performCreate(Activity.java:6237) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
at android.app.ActivityThread.-wrap11(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class fragment 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)  
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393)  
at android.app.Activity.setContentView(Activity.java:2166)  
at com.xenicdev.mapstest.MapsActivity.onCreate(MapsActivity.java:20)  
at android.app.Activity.performCreate(Activity.java:6237)  
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
at android.app.ActivityThread.-wrap11(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.mkdir()' on a null object reference 
at com.google.maps.api.android.lib6.gmm6.m.ad.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.c.h.a(Unknown Source) 
at com.google.maps.api.android.lib6.gmm6.c.y.a(Unknown Source) 
at com.google.maps.api.android.lib6.e.bd.a(Unknown Source) 
at com.google.maps.api.android.lib6.e.ev.a(Unknown Source) 
at com.google.maps.api.android.lib6.e.z.a(Unknown Source) 
at com.google.maps.api.android.lib6.e.y.a(Unknown Source) 
at com.google.android.gms.maps.internal.u.onTransact(SourceFile:107) 
at android.os.Binder.transact(Binder.java:387) 
at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source) 
at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source) 
at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source) 
at com.google.android.gms.dynamic.zza.zza(Unknown Source) 
at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source) 
at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source) 
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1230) 
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1332) 
at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2288) 
at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120) 
at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:356) 
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31) 
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:754) 
... 19 mo 
+0

Haben Sie versucht, das Projekt sauber und neu zu erstellen? –

+0

teilen Sie Ihre Layout-Datei für die Aktivität –

+0

Es gibt keine andere Layout-Datei. Ich habe nur die Vorlagendateien in diesem Projekt. Es soll immer noch funktionieren. – TheAnonymous010

Antwort

0

ich keine wirkliche Antwort auf mein Problem, außer dass gefunden habe, nachdem die Google API aktualisiert hatte, machte ich ein neues Projekt, das gearbeitet verwenden sollen. Ich kann die Ursache für diesen Fehler nicht erklären, habe aber festgestellt, dass die einzige Problemumgehung für mich war, auf das nächste Google API-Update zu warten und ein neues Projekt zu starten.

+0

Können Sie bitte sagen, welche API-Version perfekt funktioniert? –

+0

Ich kann ehrlich gesagt nicht, weil es eine Weile zurück war. Ich habe dieses Problem seither nicht wiederholt, daher sollte die neueste Version funktionieren. – TheAnonymous010

+0

Ich habe das Problem gelöst, indem ich den Kartenschlüssel aus der Manifestdatei entfernt habe. Ich wusste nicht, dass wir, wenn wir geo.API_KEY verwenden, auch MAP_KEY nicht benötigen. Das Entfernen des Kartenschlüssels aus dem Manifest hat mein Problem gelöst. Trotzdem danke. –

0

das XML ist falsch. Sie

class="com.google.android.gms.maps.SupportMapFragment" 

nicht

android:name="com.google.android.gms.maps.SupportMapFragment" 
+0

Leider behebt dies das Problem nicht. Ich habe es ausprobiert und bekomme genau den gleichen Fehler. – TheAnonymous010

0

Okay, ich hatte diese Art von Fehler manchmal auch vor. Aber was ich implementiert habe, war nicht SupportMapFragment stattdessen zu verwenden, verwende ich diesen Codeabschnitt unten.

MapFragment mapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.map); 
mapFragment.getMapAsync(this); 

Und änderte ich meine activity_maps.xml. Anstatt dies zu benutzen;

android:name="com.google.android.gms.maps.SupportMapFragment" 

Verwendung dieses

class="com.google.android.gms.maps.MapFragment" 

Hoffe, dass es das Problem löst. Sie können mich für Details mit Ihrer googlemap App kontaktieren, wenn Sie weitere Hilfe benötigen. Einfach fertig mit dem Bau eines einfachen.

1

prüfe ich die Fehlermeldung und finden soll den Tag für API_KEY modifiziert werden, wie:

<meta-data android:name="com.google.android.geo.API_KEY" 
android:value="your api key"/> 
+0

Ich habe das mehrmals überprüft. – TheAnonymous010

0

ich hatte das gleiche Problem, aber für mich war es, weil ich die

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

<meta-data 
    android:name="com.google.android.geo.API_KEY" 
    android:value="@string/google_maps_key" /> 

gestellt hatte außerhalb des </application> Tags in meinem Manifest. Als ich es in das Innere des Gebäudes verlegt habe, ist dieser Fehler verschwunden.

Verwandte Themen