MapFragment o MapView getMap () devuelve null en Lollipop

He estado utilizando Google Maps API v2 durante mucho tiempo en Android 4.x versiones sin ningún problema. Ahora instalé la última versión de Lollipop en mis dispositivos Nexus (5 y 7) intentando materializar la aplicación.

Me gustaría señalar que todo está bien en KitKiat y el problema que estoy describiendo está emergiendo sólo en Lollipop.

En mi código fuente XML estoy usando MapFragment (biblioteca de servicios de Google Play versión 6.1.11).

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

En código Java estoy sobreescribiendo el método OnPause () para llegar al mapa:

 GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

En esta línea arroja NullPointerException. En la aplicación de depuración es capaz de encontrar el fragmento, sin embargo, no es capaz de devolver GoogleMap. También he intentado utilizar MapView. También lanza null. La cosa más extraña para mí es que cargas del mapa sin un problema en app sí mismo pero en código no puedo alcanzarlo para trabajar con él.

Yo tenía exactamente el mismo problema, pero esto es lo que funcionó para mí:

Reemplazar esto …

GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

con este…

GoogleMap map = getMapFragment().getMap();

Entonces desliza a este chico malo y dale un giro …

 private MapFragment getMapFragment() { FragmentManager fm = null; Log.d(TAG, "sdk: " + Build.VERSION.SDK_INT); Log.d(TAG, "release: " + Build.VERSION.RELEASE); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { Log.d(TAG, "using getFragmentManager"); fm = getFragmentManager(); } else { Log.d(TAG, "using getChildFragmentManager"); fm = getChildFragmentManager(); } return (MapFragment) fm.findFragmentById(R.id.map); } 

Google ahora hizo una manera más conveniente para obtener el mapa utilizando el siguiente método

  myMapFragment.getMapAsync(new OnMapReadyCallback) { @Override public void onMapReady(GoogleMap googleMap) { myMap = googleMap; } }); 

Parece que esto podría ser un problema con una targetSdkVersion de 21: https://code.google.com/p/android-developer-preview/issues/detail?id=1947

Sin embargo, cambiar a getChildFragmentManager () funcionó para mí:

FindFragmentById para SupportMapFragment devuelve null en Android Studio

¿Has probado isGooglePlayServicesAvailable para comprobar por qué su devolución null? Null tiene muchas razones en getmap, intenta usar esto para comprobar por qué su dar null

  • GoogleSignatureVerifier firma mensaje no válido (google play services 9.0.0)
  • Metadatos de error de Google Play Services v13 en AndroidManifest
  • No se puede usar android: icon = "@ mipmap / ic_launcher" en Manifest after play services 7.5.0
  • Negación de permisos: Acceso al servicio ComponentInfo {...} desde pid = -1
  • Cómo obtener android app_id de los servicios de google play
  • Google Maps Lite Mode causa jank en RecyclerView
  • Servicio de juegos de Google Play: Desbloqueado Despliegue emergente no mostrado
  • Estoy recibiendo error: ": BaseGameUtils: processDebugAndroidTestManifest" en Android Studio solo inicio
  • Android: ¿Es necesario incluir los servicios de Google Play para usar GCM?
  • ¿Por qué play-services-location necesita los permisos android.permission.WRITE_EXTERNAL_STORAGE y android.permission.READ_EXTERNAL_STORAGE?
  • "Esta aplicación no se ejecutará a menos que actualice los servicios de Google Play" alerta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.