Я хочу получить доступ к переменным широты и долготы из метода onLocationChanged в моем методе test().

class MainActivity
{
private IALocationManager mIALocationManager;
Double lat;
Double lng;
private IALocationListener mLocationListener = new IALocationListenerSupport()
{
    @Override
    public void onLocationChanged(IALocation location)
    {

         lat = location.getLatitude();
         lng = location.getLongitude();
         Log.d(TAG, "location is: " + location.getLatitude() + "," + location.getLongitude());
    }
}

public void test()
{
            Log.d(TAG, "Latitude = " + lat);
            Log.d(TAG, "Longitude = "+ lng);
}
}

Из приведенного выше кода я получаю вывод как

//From onLocationChanged
location is: 2.8081944950315636,101.75935307113596
//From test()
Latitude = null 
Longitude = null

Я могу получить местоположение в методе onLocationChanged, но переменная не сохраняется в lat и lng, а также не может быть вызвана методом test(). Могу я узнать, как решить эту проблему? Можно ли передать переменную из одного метода в другой?

1
Lye Jia How 14 Мар 2018 в 07:00

2 ответа

Лучший ответ

Проблема в том, что переменные lat Широта и lng Долгота назначаются переменной только при вызове onLocationChanged. Поэтому, если вы вызываете свой метод test() до вызова onLocationChanged, тогда значения lat и lng еще не присвоены и не имеют значения. Итак, решение - вызвать метод test() в onLocationChanged или проверить null с помощью оператора if перед вызовом метода!

2
Xenolion 14 Мар 2018 в 04:07

Проверьте свой метод onLocationChanged, он не должен запускаться, используйте точки останова onLocationChanged, чтобы узнать, получаете ли вы эти значения или нет. Если этот метод не вызывается, убедитесь, что это проблема делегирования класса местоположения / API.

0
Pankaj Bhardwaj 14 Мар 2018 в 04:10