web-dev-qa-db-fra.com

Android - API Google Maps v2 - Erreurs SupportMapFragment

J'essaie de remettre en marche une de mes applications avec l'API Google Maps v2 pour la première fois. J'ai créé une clé pour mon application dans mon magasin de clés, extrait le hachage SHA1, acquis une clé API, puis effectué l'application in-app suivante ... J'ai inclus:

google-play-services.jar

ainsi que d'importer la bibliothèque GooglePlayServices et de l'ajouter en tant que référence au projet. Dans mon code Java, je charge simplement la ressource de mise en page.

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

Dans la mise en page (res/layout/map.xml) que je tente d'instancier, j'ai:

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

J'ai également déclaré ce qui suit dans mon manifeste:

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

Et déclaré dans la balise Application du manifeste:

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

Lorsque l'activité est chargée, il se bloque avec les erreurs suivantes dans LogCat:

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

J'ai tenté de faire des recherches sur le problème, mais j'ai été incapable de trouver ce que je cherchais. Toute aide est grandement appréciée.

13
Matt Clark

Vous devez étendre FragmentActivity si vous utilisez SupportMapFragment. Si vous utilisez MapFragment, vous pouvez étendre Activity.

23
Paul Wein

Dans votre mise en page, utilisez 

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

au lieu de

...    
Android:name="com.google.Android.gms.maps.SupportMapFragment"
...
12
Rodion Altshuler

Vous devez faire ceci:

public class MainActivity extends Android.support.v4.app.FragmentActivity{

}
7
Jovan

Cela a fonctionné pour moi: https://stackoverflow.com/a/13744765/1215098

On dirait que vous devez ajouter des services Google Play en tant que module, pas simplement en tant que .jar

5
uncle Lem

J'ai résolu cette erreur en cochant " Copier les projets dans l'espace de travail " lors de l'importation de la lib. Des services Google Play.
Plus d'infos ici: http://developer.Android.com/google/play-services/setup.html

5
Umberto

j'ai eu le même problème avec les services Google Play et tout .. j'ai inclus en tant que bibliothèque et tout, et le problème persistait (" impossible de trouver com.google.Android.gms.maps.suportmapfragment ") ..

j'ai pu résoudre le problème en: Aller à Propriétés du projet. Puis Sélectionnez Chemin de construction Java . Puis sélectionnez Ordre et exportation onglet. Puis, Assurez-vous de cocher la case Dépendances Android et Bibliothèques privées Android

J'espère que cela t'aides :)

1
Omar B.

J'ai ajouté <uses-library Android:name="com.google.Android.maps" /> dans le fichier manifeste. Cela a fonctionné pour moi!

0
LuZa

Mon cas, j'ajoute:

Fichier -> Nouveau -> Google -> Activité Google Maps

Et je suis ce tutoriel

0
William

Je pense que j'ai eu le même problème, il semble que les nouvelles versions, vous devez ajouter cette ligne au manifeste 

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