У меня проблемы с библиотекой карт Google. Это странная проблема, о которой я слышал с 2013 года, но она все еще существует ...
Иногда, когда я загружаю карту, чтобы показать текущую позицию, приложение вылетает. Карта находится внутри фрагмента:
class MyFragment: Fragment(), OnMapReadyCallback, LocationListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{
Ошибка в этой функции:
private fun actualizarPosicionMapa(coordenadas: MisCoordenadas){
try{
val latLng = LatLng(coordenadas.coordenadasLatitud?.toDouble() ?: 0.0, coordenadas.coordenadasLongitud?.toDouble() ?: 0.0)
val cameraPosition = CameraPosition.Builder().target(latLng).zoom(Constantes.General.zoomMap).build()
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
if(cameraUpdate != null && mMap != null){
//the error is triggered at the next line
mMap.moveCamera(cameraUpdate)//this one line!
}
}
catch (ex: Exception){
Log.wtf("errorMapBOOM", ex.message)
Toast.makeText(requireContext(), ex.localizedMessage, Toast.LENGTH_LONG).show()
}
}
Ошибка Crashlitics:
Fatal Exception: java.lang.NullPointerException Attempt to get length
of null array java.nio.ByteBufferAsShortBuffer.put
(ByteBufferAsShortBuffer.java:121)
com.google.maps.api.android.lib6.gmm6.vector.gl.buffer.d.d (d.java:71)
com.google.maps.api.android.lib6.gmm6.vector.gl.buffer.d.a (d.java:52)
com.google.maps.api.android.lib6.gmm6.vector.a.a (a.java:56)
com.google.maps.api.android.lib6.gmm6.vector.bq.b (bq.java:47)
com.google.maps.api.android.lib6.gmm6.vector.bq.a (bq.java:41)
com.google.maps.api.android.lib6.gmm6.vector.cd.a (cd.java:365)
com.google.maps.api.android.lib6.gmm6.vector.bf.run (bf.java:112)
Минимальный уровень API I для приложения было выбрано 19.
Последняя версия карты:
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
Манифест:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="MY_MAPS_API_KEY_:)" />