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:
- Dibujo de formas en Android MapView independientemente del nivel de zoom
- ¿Qué tan bien se integra la API de Bing Maps con la aplicación de Android?
- Cómo obtener googlemaps para aceptar un archivo KML local?
- Cómo configurar Google Maps API v2 para mostrar mapa del mundo entero?
- Cómo recuperar la ubicación del dispositivo actual y mostrarlo en el fragmento de mapa en un fragmento
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)
- Clip o quitar una parte de la polilínea google maps v2
- ¿Cómo mostrar el mapa google nativo en la vista web en android?
- ¿cómo puedo hacer dos oyentes de Google Maps? setOnCameraChangeListener
- Android Google Maps API v2 - cómo cambiar el icono de marcador
- Problema al utilizar 2 fragmentos de mapa en una aplicación
- ¿Cómo obtener el nombre de la ciudad de la latitud y la longitud en la brecha telefónica?
- Google Maps v2 - establecer mi ubicación y ampliar
- Androide MapView en el fragmento
¡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
- Android: Establecer el tiempo en el selector de tiempo con el tiempo mostrado en la vista de texto
- React Native – initialProperties Android