Я пытаюсь внедрить SDK автозаполнения поиска мест Google в мое приложение kotlin android.
Использую второй метод, указанный в официальной документации:
Использовать намерениезапустить автозаполнение активности
Вот мой код:
private var fromLocation: LatLng? = LatLng(0.0, 0.0)
private var toLocation: LatLng? = LatLng(0.0, 0.0)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
val place: Place? = data?.let { Autocomplete.getPlaceFromIntent(it) }
if (PLACE_PICKING_MODE == 1) {
fromLocation = place?.latLng
val theIcon = R.drawable.gps_default
placeMarkerOnMap(fromLocation, theIcon)
map.animateCamera(CameraUpdateFactory.newLatLngZoom(fromLocation, 17f))
} else if (PLACE_PICKING_MODE == 2) {
toLocation = place?.latLng
val theIcon = R.drawable.gps_default
placeMarkerOnMap(toLocation, theIcon)
map.animateCamera(CameraUpdateFactory.newLatLngZoom(toLocation, 17f))
}
} else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
// TODO: Handle the error.
val status: Status = Autocomplete.getStatusFromIntent(data!!)
} else if (resultCode == RESULT_CANCELED) {
println("user Canceled")
}
}
if (requestCode == REQUEST_CHECK_SETTINGS) {
if (resultCode == Activity.RESULT_OK) {
locationUpdateState = true
startLocationUpdates()
}
}
}
каждый раз, в конце концов, он заканчивается с ошибкой kotlin.KotlinNullPointerExceptio
ОБНОВЛЕНИЕ
Основываясь на ответе JJ Jacobs , я изменил несколько строк внутри IF statements
, чтобы они были такими:
if (PLACE_PICKING_MODE == 1) {
if (place != null) {
fromLocation = place.latLng!!
}
val theIcon = R.drawable.gps_default
placeMarkerOnMap(fromLocation, theIcon)
map.animateCamera(CameraUpdateFactory.newLatLngZoom(fromLocation, 17f))
} else if (PLACE_PICKING_MODE == 2) {
if (place != null) {
toLocation = place.latLng!!
}
val theIcon = R.drawable.gps_default
placeMarkerOnMap(toLocation, theIcon)
map.animateCamera(CameraUpdateFactory.newLatLngZoom(toLocation, 17f))
}
Но все же этовыдаёт мне ошибку:
Failure delivering result ResultInfo{who=null, request=4, result=-1, data=Intent { (has extras) }} to activity {com.innoventiq.arkbeh/com.innoventiq.arkbeh.MainActivity}: kotlin.KotlinNullPointerException
и указал мне на эти строки:
fromLocation = place.latLng!!
и
toLocation = place.latLng!!