Использование геокодера - невозможно получить (0) onClick - Широта и долгота Kotlin Проект - PullRequest
0 голосов
/ 07 мая 2020

Каждый раз, когда я запускаю проект, программа запрашивает разрешения для определения местоположения. После принятия приглашение исчезает, и пользователь может войти в город. При нажатии на кнопку «получить местоположение» должны отображаться широта и долгота ... однако программа просто закрывается.

Исключение в этой строке: val address = addresses.get (0) Вот MainActivity.kt

import android.Manifest
import android.content.pm.PackageManager
import android.location.Geocoder
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import kotlinx.android.synthetic.main.activity_main.button
import kotlinx.android.synthetic.main.activity_main.editText
import kotlinx.android.synthetic.main.activity_main.textView2
import java.util.Locale

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    button.isEnabled = false 

    if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != 
PackageManager.PERMISSION_GRANTED
        && ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != 
PackageManager.PERMISSION_GRANTED)
    ActivityCompat.requestPermissions(this, 
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION),
        111)
    else
        button.isEnabled = true

    button.setOnClickListener {
        var city = editText.text.toString()
        var gc = Geocoder(this, Locale.getDefault()) 
        var addresses = gc.getFromLocationName(city,2)  
        val address = addresses.get(0) 

        textView2.visibility = View.VISIBLE 
        textView2.text = "${address.latitude} \n ${address.longitude}\n ${address.locality}"
    }
}


override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<out String>,
    grantResults: IntArray
)
    {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if(requestCode == 111 && grantResults[0]==PackageManager.PERMISSION_GRANTED)
            button.isEnabled = true
}
}
...