Bonjour,
j'essaye de faire fonctionner google maps sur android en utilisant SupportFragmentManager. cela fonctionne bien sur mon smartphone (4.3), mais quand je l'execute sur un emulateur (android sdk, avd) targets comme google api's (API 17,18,22) elle crash et on me sort ces exceptions :
voila ma méthode onCreate :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 06-04 23:22:26.662: W/GooglePlayServicesUtil(2844): Google Play services out of date. Requires 7571000 but found 6774470 06-04 23:22:26.676: D/AndroidRuntime(2844): Shutting down VM 06-04 23:22:26.676: E/AndroidRuntime(2844): FATAL EXCEPTION: main 06-04 23:22:26.676: E/AndroidRuntime(2844): Process: com.example.radaroc, PID: 2844 06-04 23:22:26.676: E/AndroidRuntime(2844): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.radaroc/com.example.radaroc.SupportMapActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.setOnMapClickListener(com.google.android.gms.maps.GoogleMap$OnMapClickListener)' on a null object reference 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.app.ActivityThread.access$800(ActivityThread.java:151) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.os.Handler.dispatchMessage(Handler.java:102) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.os.Looper.loop(Looper.java:135) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.app.ActivityThread.main(ActivityThread.java:5257) 06-04 23:22:26.676: E/AndroidRuntime(2844): at java.lang.reflect.Method.invoke(Native Method) 06-04 23:22:26.676: E/AndroidRuntime(2844): at java.lang.reflect.Method.invoke(Method.java:372) 06-04 23:22:26.676: E/AndroidRuntime(2844): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 06-04 23:22:26.676: E/AndroidRuntime(2844): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 06-04 23:22:26.676: E/AndroidRuntime(2844): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.setOnMapClickListener(com.google.android.gms.maps.GoogleMap$OnMapClickListener)' on a null object reference 06-04 23:22:26.676: E/AndroidRuntime(2844): at com.example.radaroc.SupportMapActivity.onCreate(SupportMapActivity.java:66) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.app.Activity.performCreate(Activity.java:5990) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 06-04 23:22:26.676: E/AndroidRuntime(2844): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 06-04 23:22:26.676: E/AndroidRuntime(2844): ... 10 more
et voila mon layout xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_support_map); int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext()); // Showing status if(status!=ConnectionResult.SUCCESS){ // Google Play Services are not available int requestCode = 10; Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, requestCode); dialog.show(); }else { // Google Play Services are available FragmentManager myFM = getSupportFragmentManager(); final SupportMapFragment fm = (SupportMapFragment) myFM .findFragmentById(R.id.map); //SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); googleMap = fm.getMap();// fm.getMapAsync(this); googleMap.setMyLocationEnabled(true); getSupportLoaderManager().initLoader(0, null, this); } }
voila mon avd manager :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment" /> </RelativeLayout>
![]()
Partager