Excepción de puntero nulo en mapFragment.getMapAsync (this) al inicializar google map

Cuando utilizo v6.5.87 de Google Play Services, obtengo una excepción de puntero nulo cuando llamo a getMapAsync() . Estoy usando un SupportMapFragment en el diseño xml de mi Fragment .

Mi código:

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

Nota: No hay ningún problema al llamar a getMap() en versiones antiguas de Google Play Services, pero getMap() ya está obsoleta ( docs ).

Aquí está el rastro de la pila para el NPE:

 java.lang.NullPointerException at com.decos.fixi.fragments.FragmentLocationMap.initializeMap(FragmentLocationMap.java:132) at com.decos.fixi.fragments.FragmentLocationMap.onCreateView(FragmentLocationMap.java:95) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4921) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) at dalvik.system.NativeStart.main(Native Method) 

¡Finalmente conseguí la respuesta!

 SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager() .findFragmentById(R.id.mapFragment); 

en lugar de

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

GetChildFragmentManager () hizo el truco.

Además, si está utilizando SupportMapFragment mapFragment = (SupportMapFragment).....

A continuación, asegúrese de que ha establecido este atributo de class en XML

 class="com.google.android.gms.maps.SupportMapFragment" 

No

 class ="com.google.android.gms.maps.MapFragment" 

En AppCompatActivity ampliar

 FragmentManager mFragmentManager = getSupportFragmentManager(); SupportMapFragment mVTMapFragment =(SupportMapFragment)mFragmentManager.findFragmentById(R.id.mapRideview); mVTMapFragment.getMapAsync(this); 

E implementar método de devolución de llamada onMapReady

 @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; setUpMap(); } 

¿Ha implementado la función de devolución de llamada para su getMapAsync() ?

Si no es así, debe implementar el método onMapReady () en su código y, a continuación, puede agregar marcadores o mover cosas de cámara en su método onMapReady() .

Puede ver este ejemplo acerca de onMapReady() .

Título

Ejecute su programa agregando este

  SupportMapFragment supportMapFragment" 

AÑADIR ESTO EN EN CREAR MÉTODO ()

 supportMapFragment = SupportMapFragment.newInstance(); FragmentManager fm = getFragmentManager(); fm.beginTransaction().replace(R.id.maplayout, new` `MapFragmentClass()).commit();` supportMapFragment.getMapAsync(this); android.support.v4.app.FragmentManager sfm = getSupportFragmentManager(); sfm.beginTransaction().add(R.id.map,supportMapFragment).commit(); 

Esto funcionará comprobarlo

  • Cómo obtener la latitud y la longitud en el mapa en Android?
  • Google Maps v2 Projection.toScreenLocation (...) muy lento
  • ¿Cómo saber qué marcador se ha hecho clic en Google Maps v2 para Android?
  • Ninguna propiedad: sonatypeUserName para la clase: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer
  • Problemas con Google MapView OutOfMemoryError de Google
  • PhoneGap y Google Maps API V3 "¿Desactivado?"
  • Utilizar la API de dirección de GoogleMap o MapBox para implementar mi propia navegación en mi aplicación
  • Impresión de certificado SHA1
  • Android: java.lang.NoClassDefFoundError: com.google.android.gms.R $ styleable
  • Android MapActivity: No se pudo obtener el cliente de fábrica de conexión
  • ¿Cómo aumentar la velocidad para cargar una actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.