2013-09-03 4 views
1

J'ai créé l'application Google Maps v2. J'ai suivi le tutoriel étape par étape. Et quand je lance cette application.Google Maps v2: comment importer google-play-service.jar dans les dépendances Android

Apparaît pop up "Malheureusement, Google Maps v2 s'est arrêté".

Voici le logcat ...

09-03 04:51:33.296: E/AndroidRuntime(2148): FATAL EXCEPTION: main 
09-03 04:51:33.296: E/AndroidRuntime(2148): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.achson.googlemapsv2/com.achson.googlemapsv2.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.os.Looper.loop(Looper.java:137) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at java.lang.reflect.Method.invoke(Method.java:525) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at dalvik.system.NativeStart.main(Native Method) 
09-03 04:51:33.296: E/AndroidRuntime(2148): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.Activity.setContentView(Activity.java:1895) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at com.achson.googlemapsv2.MainActivity.onCreate(MainActivity.java:18) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.Activity.performCreate(Activity.java:5133) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  ... 11 more 
09-03 04:51:33.296: E/AndroidRuntime(2148): Caused by: java.lang.ClassCastException: com.google.android.gms.maps.SupportMapFragment cannot be cast to android.app.Fragment 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.Fragment.instantiate(Fragment.java:585) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.Fragment.instantiate(Fragment.java:560) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.app.Activity.onCreateView(Activity.java:4738) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689) 
09-03 04:51:33.296: E/AndroidRuntime(2148):  ... 21 more 

Je suppose que les services play-google est pas dans le dossier de dépendances Android.

Mais c'est à l'intérieur du dossier Android Private Libraries. Je ne sais pas comment importer dans le dossier Dépendances Android. Quelqu'un qui sait? S'il vous plaît partager à ce sujet.

09-06 15:29:30.480: E/AndroidRuntime(1260): FATAL EXCEPTION: main 
09-06 15:29:30.480: E/AndroidRuntime(1260): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.googlemapsv2/com.example.googlemapsv2.MainActivity}: java.lang.NullPointerException: CameraUpdateFactory is not initialized 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.os.Looper.loop(Looper.java:137) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at java.lang.reflect.Method.invoke(Method.java:511) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at dalvik.system.NativeStart.main(Native Method) 
09-06 15:29:30.480: E/AndroidRuntime(1260): Caused by: java.lang.NullPointerException: CameraUpdateFactory is not initialized 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at com.google.android.gms.internal.ac.a(Unknown Source) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at com.google.android.gms.maps.CameraUpdateFactory.aV(Unknown Source) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at com.google.android.gms.maps.CameraUpdateFactory.newLatLngZoom(Unknown Source) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at com.example.googlemapsv2.MainActivity.onCreate(MainActivity.java:24) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.app.Activity.performCreate(Activity.java:5104) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
09-06 15:29:30.480: E/AndroidRuntime(1260):  ... 11 more 
+0

Vérifiez votre fichier manifeste ... voir si le nom de l'activité est mentionné –

+0

cochez cette case http://stackoverflow.com/questions/17611017/importing-google-play-service-library-showing-a-red-x- à côté de cette référence et/17611095 # 17611095. comment importer le projet de bibliothèque de services Google Play. L'ajoutez-vous en tant que jar à votre dossier libs? Vous devez référencer le projet de bibliothèque dans votre projet de carte. – Raghunandan

+0

voir ce http://twntee.tumblr.com/post/59576020346/the-maps-api-adding-a-map-to-your-android-project –

Répondre

0

En supposant une erreur de mise en page de l'inflation

principalement causée par l'inflation du type de fragment mauvais basé sur les importations.

Cas 1: Si vous utilisez un MapFragment dans votre FragmentActivity ou activité, en utilisant la import android.support.v4.app.* (votre classe étend l'activité ou Fragment activité du ce paquet), alors vous obtiendrez ClassCastException

Solution Utilisez un SupportMapFragment

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

puis utilisez le code pour obtenir la carte dans votre activité.

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

Cas n ° 2: Si vous utilisez un SupportMapfragment dans votre FragmentActivity ou activité, en utilisant la import android.app.* (à savoirVotre classe étend l'activité ou Fragment activité du ce paquet), puis aussi vous obtiendrez ClassCastException

Solution: Utilisez un MapFragment

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

puis utilisez le code pour obtenir la carte de référence dans votre acitivité

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

en outre, les services de jeu n'a pas besoin d'être spécifiquement dans les dossiers Android Dependencies, comme Android dossier privé est trop ajouté à votre chemin de construction.

+0

Je n'utilise pas SupportMapFragment, j'utilise MapFragment googleMap = ((MapFragment) getFragmentManager(). FindFragmentById ( R.id.map)). GetMap(); – achson

+0

J'ai changé. . mais il n'y a pas de Google Maps. juste vide fragment. – achson

+0

-t-elle montre que les boutons de zoom? –

0

Avez-vous déclaré l'activité dans votre manifeste? Une fois que vous importez la bibliothèque dans votre espace de travail (dans Eclipse), vous faites un clic droit sur le projet, ouvrez les propriétés, cliquez sur android et en bas, vous verrez la section d'importation de la bibliothèque. Ajoutez-le à cela.

+0

Je suis déjà en train de faire ça. Ici le manifeste est – achson

+0

Ajouter le code manifeste à la publication principale ci-dessus. – KickAss

+0

Il y a un problème avec google-play-service. Il ne fait pas partie des dépendances Android. Est-ce le problème? – achson

0

Quelle version de l'API utilisez-vous? Comment regarde ton xml avec la disposition de la carte? J'ai eu le même problème récemment. Et cela a été causé parce que j'utilisais un mauvais type de fragment.

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

Il a travaillé quand je mets android:name="com.google.android.gms.maps.SupportMapFragment"

alors dans votre code si vous travaillez sur la carte, vous devez étendre FragmentActivity insetad de Activity pour votre classe (public class MapActivity extends FragmentActivity)

GoogleMap mMap; 
    SupportMapFragment mMapFragment; 
    mMapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)); 
    mMap = mMapFragment.getMap(); 

Et c'est ainsi vous obtenez le mapFragment dans le code.

Questions connexes