Android – Google Maps API v2 – SupportMapFragment Errori

Sto cercando di ottenere una delle mie applicazioni di back up e funzionante con le Google Maps API v2 per la prima volta. Ho creato una chiave per la mia app nel mio archivio, estratto hash SHA1, ha acquisito una chiave API, poi ho fatto le seguenti in-app… ho incluso:

google-play-services.jar

nonché di importare il GooglePlayServices libraryand aggiungere un riferimento al progetto. Nel mio codice Java ho semplicemente caricare il layout delle risorse.

public class Times extends Activity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);
    }
}

Nel layout (res/layout/map.xml), che sto cercando di creare un’istanza che ho:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

Anche io ho la seguente dichiarato nel mio manifesto:

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="tinyTech.us.ua.busschedule.permission.MAPS_RECEIVE" />

<permission
    android:name="tinyTech.us.ua.busschedule.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

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

E dichiarate nella Domanda tag del manifesto:

<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="My_API_Key" />

Quando l’attività viene caricato, si blocca con i seguenti errori nel LogCat:

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
    at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)

Ho tentato di ricerca il problema, però, sono stato in grado di trovare quello che sto cercando. Qualsiasi aiuto è molto apprezzato.

  • Qual è il tuo codice di attività? Si sta cercando di lanciare la SupportMapFragment non supportano la versione del Frammento, come evidenziato dal registro Caused by: java.lang.ClassCastException: com.google.android.gms.maps.SupportMapFragment cannot be cast to android.app.Fragment
  • sì, perché si utilizza l’Attività non FragmentActivity come classe base per la sua attività e si può trovare questo nella mia risposta 🙂
InformationsquelleAutor Matt Clark | 2012-12-05

 

9 Replies
  1. 23

    È necessario estendere FragmentActivity se si utilizza SupportMapFragment.
    Se si utilizza il MapFragment è possibile estendere Activity.

    • Ho lo stesso problema ma sto estendendo FragmentActivity invece di Attività.
  2. 12

    Del layout, l’uso

    <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"/>

    invece di

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

    Si deve fare questo:

    public class MainActivity extends android.support.v4.app.FragmentActivity{
    
    }
    • Se è possibile ottenere MapFragment ma non SuppoortMapfragment questo è il motivo per cui!
  4. 1

    ho avuto lo stesso problema con Google Play Services e tutto.. ho incluso come di una biblioteca e di tutti, e il problema persisteva (“non riusciva a trovare com.google.android.gms.mappe.suportmapfragment“)..

    sono stato in grado di risolvere il problema:
    Andando per le Proprietà del Progetto. Quindi
    selezionare Java Build Path.
    Quindi Selezionare Ordine e di Esportazione scheda.
    quindi,
    Assicurati di controllare la Android Dipendenze e Android Biblioteche Private

    Spero che questo aiuti 🙂

  5. 0

    Ho aggiunto <uses-library android:name="com.google.android.maps" /> nel file manifest.
    Questo ha funzionato per me!

  6. 0

    Penso che ho avuto lo stesso problema, sembra che le versioni più recenti è necessario aggiungere questa riga al manifesto

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

Lascia un commento