Как назначить координаты местоположения вне onSuccessListener в Android (Kotlin)? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь определить местоположение устройства Android.Я следовал этим инструкциям по использованию fusedLocationClient .

Я не могу назначить переменные вне .addSuccessListener.

Я буду что журналы вне слушателявызывается перед журналами внутри прослушивателя событий, поэтому я должен пытаться назначить переменные до вызова прослушивателя.Это имеет смысл, потому что слушатели являются асинхронными.

override fun onMapReady() {
        var loc: Location = Location("")
        fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)

        fusedLocationClient.lastLocation
            .addOnSuccessListener { location : Location ->
                loc = location
                Log.i("Lat, Long",loc.latitude.toString() + ", " +  loc.longitude.toString()) // this correctly logs the latitude and longitude

            }

        Log.i("Lat, Long",loc.latitude.toString() + " " + loc.longitude.toString()) // this logs latitude and longitude as (0.0,0.0)
}

Я попытался поместить инициализацию fusedLocationClient в onCreate() и иметь fusedLocationClient в качестве частного свойства:


    private fusedLocationClient: FusedLocationProviderClient

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

        fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)

        fusedLocationClient.lastLocation
            .addOnSuccessListener { location : Location ->
                loc = location
                Log.e(loc.latitude.toString(), loc.longitude.toString())
            }
    }

Я такжепопробовал это в Resume, но все равно не повезло.

1 Ответ

0 голосов
/ 21 апреля 2019

Сделать свойство loc делегированным:

var loc: Location? by Delegates.observable(null as? Location){
        _, _, newLoc ->
       // log
}

Этот делегат помогает вам наблюдать любые изменения в свойстве

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...