MapFragment.getMap () devuelve null

Estoy intentando conseguir un mapa de un SupportMapFragment pero devuelve null. De lo que he leído esto podría ser porque el fragmento todavía no se muestra completamente y por lo tanto no existe un mapa ?! Intenté arreglarlo usando executePendingTransactions () pero sin éxito hasta ahora.

¿Alguna idea de cómo solucionarlo?

Aquí está el código

private GoogleMap map; private SupportMapFragment mapFragment; @Override public void onCreate( Bundle savedInstanceState ) { //... super.onCreate( savedInstanceState ); setContentView( R.layout.screen_mission2 ); GoogleMapOptions mapOptions = new GoogleMapOptions(); mapOptions.mapType(GoogleMap.MAP_TYPE_NORMAL) .compassEnabled(true) .rotateGesturesEnabled(false) .tiltGesturesEnabled(false); android.support.v4.app.FragmentManager myFragmentManager = getSupportFragmentManager(); android.support.v4.app.FragmentManager.enableDebugLogging(true); mapFragment = SupportMapFragment.newInstance(mapOptions); FragmentTransaction fragmentTransaction = myFragmentManager.beginTransaction(); fragmentTransaction.add(R.id.mapFragment, mapFragment); fragmentTransaction.commit(); myFragmentManager.executePendingTransactions(); if(mapFragment == null) Base.log("mapFragment==null"); if(map==null){ map = mapFragment.getMap(); Base.log("map should have been initialized"); if(map==null) Base.log("map still null"); } } 

Y el archivo de diseño:

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

Devuelve el siguiente registro

 V/FragmentManager(24224): add: SupportMapFragment{4078c4b8 id=0x7f06003d} V/FragmentManager(24224): Allocated fragment index SupportMapFragment{4078c4b8 #1 id=0x7f06003d} V/FragmentManager(24224): moveto CREATED: SupportMapFragment{4078c4b8 #1 id=0x7f06003d} D/EMR (24224): map should have been initialized D/EMR (24224): map still null 

Intente mover todo el código que haga referencia a su GoogleMap a onStart() o onResume() . El mapa en un fragmento de mapa no se instancia hasta después de que el fragmento ha pasado a través de onCreateView ( enlace ), que sucede después de que la actividad principal haya pasado a través de onCreate() . Además, debe comprobar su GoogleMap de null sin importar, porque si los servicios de google play no están instalados, o el mapa no está disponible por alguna otra razón, será null .

De lo que he leído esto podría ser porque el fragmento todavía no está completamente visualizado y por lo tanto no existe un mapa?

Correcto.

¿Alguna idea de cómo solucionarlo?

Realmente utilizar el archivo de diseño, llamando a setContentView() , y deshacerse de todas las cosas FragmentTransaction . A continuación, puede recuperar el SupportMapFragment ya creado y utilizarlo:

 setContentView(R.layout.activity_main); SupportMapFragment mapFrag=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapFragment); 

Tienes que implementar OnMapReadyCallback , definir su public void onMapReady(GoogleMap map) y usarlo para operar en el fragmento como se indica en la API de Google

  • Android MapFragment Runtime Error - No se pudo encontrar la clase 'maps.jk'
  • SupportMapFragment.getmap () devuelve null
  • Cambiar de fragmento con fragmento de mapa deja una pantalla negra
  • Android GoogleMap o SupportMapFragment - excepción de puntero nulo
  • Google map dentro de otro fragmento - Error al llamar a getMapAsync
  • Google Maps Android API v2 detecta un clic largo en el mapa y agrega marcador que no funciona
  • Cambiar fragmentos - Google Map Fragmento V2 - La actividad ha sido destruida Error
  • Google map se estrella en pocos dispositivos
  • Android GoogleMap v2 se recorta o no se muestra completamente
  • No se puede ver los detalles de StrictMode en logcat - Se ha suprimido la violación de la política de StrictMode en la rotación de la pantalla
  • GetMapAsync () en el fragmento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.