services que puedo pokemon play instalar google como actualizar android google-play-services google-maps-android-api-2 android-5.0-lollipop

android - que - MapFragment o MapView getMap() devuelve un valor nulo en Lollipop



google play services versions (4)

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

Me gustaría señalar que todo está bien en KitKiat y el problema que estoy describiendo está apareciendo solo en Lollipop.

En mi código fuente XML, estoy usando MapFragment (biblioteca de Google Play Services 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 el código Java, estoy sobrescribiendo el método OnPause () para alcanzar el mapa:

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

En esta línea lanza NullPointerException. En la aplicación de depuración es capaz de encontrar fragmentos, sin embargo, no puede devolver GoogleMap. También he intentado utilizar MapView. También arroja nula. Lo más extraño para mí es que el mapa se carga sin problemas en la aplicación, pero en el código no puedo alcanzarlo para que funcione.


¿Has probado isGooglePlayServicesAvailable para comprobar por qué está volviendo nulo? null tiene muchas razones en getmap, intenta usar esto para comprobar por qué está dando null


Google ahora hizo una manera más conveniente de obtener el mapa usando el siguiente método

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



Tuve exactamente el mismo problema pero esto es lo que funcionó para mí:

Reemplace este ...

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

con este...

GoogleMap map = getMapFragment().getMap();

luego 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); }