2013-01-02 18 views
5

cercando di visualizzare la mappa di Google utilizzando un frammento. Utilizzato il seguente page come tutorial.durante il gonfiaggio di XML nel frammento di Google Maps

Viene visualizzata l'eccezione "Errore durante il gonfiaggio del frammento di classe".

1) importato dei servizi vaso google-play-services.jar

2) scaricato e configurato giocare il google SDK.

3) ha ottenuto l'ultima chiave API v2.

4) Autorizzazione aggiunta com.google.android.providers.gsf.permission.READ_GSERVICES nel manifest.

5) utilizzando mindsdk = 8 e target = 16.

Per un riferimento, 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"/> 

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 
+0

Si prega di inviare la traccia dello stack. – CommonsWare

+0

sono un principiante. per favore dimmi se ho fatto qualche errore – 10101010

+0

Questa non è una traccia di stack Java pertinente alla tua domanda. Eseguire l'app all'esterno del debugger, consentire l'arresto anomalo e guardare LogCat per la traccia dello stack. – CommonsWare

risposta

4

Error inflating class fragment viene di solito quando si sta cercando di utilizzare l'API native Livello 11 versione di frammenti - che il vostro codice sorgente sta facendo - ma sta tentando di eseguirlo su un versione precedente di Android. Per poter utilizzare <fragment> il livello di API 10 e al di sotto, è necessario utilizzare backport del pacchetto di sostegno Android di frammenti:

  • aggiungere il pacchetto Android di sostegno al progetto
  • ereditare da FragmentActivity invece di Activity
  • utilizzare SupportMapFragment piuttosto che MapFragment
  • cambiamento qualsiasi altra cosa che ora differisce basata su questo backport

Oppure, è possibile impostare android:minSdkVersion su 11 o versione successiva ed eseguire il codice corrente, solo sui dispositivi più recenti.

È possibile leggere ulteriori informazioni sul pacchetto di supporto Android in the documentation.

+1

per la seconda correzione uso Nexus con Jelly, ma non ha funzionato. e nel primo, anche dopo aver apportato modifiche nei quattro punti, lancia la stessa eccezione. – 10101010

+0

ereditato da FragmentActivity anziché Activity –

1

Ho ricevuto lo stesso errore. Verifica di eseguirlo sul dispositivo reale e sulla libreria di servizi di gioco di google nel modo seguente. project_properties-> Android-> Libreria poi aggiungere Google Play lib lì ..

ancora fanno librerie copia cartella Android v4.jar sostegno e google_play_services.jar e quindi fare clic destro per ciascun file e selezionare costruire al percorso ..

controlla anche che la tua chiave API sia per il pacchetto com.example.com.mapsdemo..per ogni pacchetto deve essere generata una nuova chiave API.

e utilizzare SupportMapFragment invece su MapFragment nel file XML.

questo ha risolto il mio problema.

Spero che questo risolva il tuo problema.

0

Un sacco di domande su questo problema, e dopo due giorni, la mia soluzione è semplice: devi compilare il tuo progetto usando l'API Google di Google. Mi sento così stupido a riguardo.