5

Próbuję pokazać GoogleMap na moim Activity. Zrobiłem wszystkie niezbędne kroki, w tym generowanie kluczy, połączone google-play-services_lib, dodano android-support-v4.jar. Ale mam do czynienia z błędem z powodu Fragment. Próbowałem wielu rozwiązań, spędziłem wiele godzin, ale nie mogłem rozwiązać tego problemu. Proszę pomóż mi.Google Android Mapy - błąd pompowania fragmentu klasy

MapActivity.java

package com.example.classified_android_app; 

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

public class MapActivity extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map); 
    } 
} 

map.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <fragment 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment" 
     map:cameraTargetLat="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 

</RelativeLayout> 

Oczywista

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.classified_android_app" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:maxSdkVersion="19" 
     android:minSdkVersion="16" 
     android:targetSdkVersion="19" /> 

    <permission 
     android:name="com.example.classified_android_app.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.example.classified_android_app.permission.MAPS_RECEIVE" /> 
    <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-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <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.geo.API_KEY" 
      android:value="my key" /> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity 
      android:name=".MapActivity" 
      android:label="Google Map" 
      android:theme="@style/MyTheme" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Log

06-21 09:54:08.592: W/dalvikvm(13704): threadid=1: thread exiting with uncaught exception (group=0x4191d908) 
06-21 09:54:08.630: E/AndroidRuntime(13704): FATAL EXCEPTION: main 
06-21 09:54:08.630: E/AndroidRuntime(13704): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.classified_android_app/com.example.classified_android_app.MapActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2211) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread.access$600(ActivityThread.java:149) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.os.Looper.loop(Looper.java:153) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread.main(ActivityThread.java:4987) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at java.lang.reflect.Method.invokeNative(Native Method) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at java.lang.reflect.Method.invoke(Method.java:511) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at dalvik.system.NativeStart.main(Native Method) 
06-21 09:54:08.630: E/AndroidRuntime(13704): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
+0

Czy używasz Eclipse? –

+0

Twój 'android: minSdkVersion =" 16 "', więc powinieneś używać 'MapFragment' –

Odpowiedz

3

głównym problemem jest twój android:minSdkVersion="16"

Co oryginalne docs powiedzieć, jest

Jeśli Twój android:minSdkVersion > 12 należy użyć MapFragment z rozciąga Activity

I

Jeśli android:minSdkVersion < 12 należy użyć SupportMapFragment z rozciąga FragmentActivity

0

Spróbuj zastąpić

<fragment 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment" 
     map:cameraTargetLat="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 

z

<fragment 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     map:cameraTargetLat="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 

Zobacz ten link podany przez android oficjalnej stronie How to add static fragment from XML

+0

nie działa, wciąż ten sam błąd :( –

+0

co to jest błąd? –

+0

wyjątek java.lang.RuntimeException: Nie można rozpocząć działania ComponentInfo {com.example.classified_android_app /com.example.classified_android_app.MapActivity}: android.view.InflateException: Binarna linia plików XML nr 6: Błąd pompowania fragmentu klasy –

0

warto dodać to do onCreate().

 SupportMapFragment mapFragment = 
       (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

i zastąp to.

<fragment 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment" 
     map:cameraTargetLat="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 

z

<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.SupportMapFragment" /> 
     map:cameraTargetLat="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 
+0

Gdy dodaję xmlns: android = "http://schemas.android.com/apk/res/android "w fragmencie, to pokazuje ten błąd - Nieoczekiwany prefiks przestrzeni nazw" xmlns "znaleziony dla fragmentu tagu –

+0

Powinien działać w taki sposób, w jaki był przechowywany, o ile dodałeś SupportMapFragment do twojego onCreate() – 1ftw1

+0

I nie dostaję –