从另一个方法访问位置变量

时间:2018-03-14 04:00:45

标签: java android

我想在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方法获取该位置,但该变量不会存储到latlng,也无法按{{1}调用} 方法。 我可以知道如何解决这个问题吗?是否可以将变量从一个方法传递到另一个方法?

2 个答案:

答案 0 :(得分:2)

问题是因为变量lat纬度和lng经度仅在调用onLocationChanged时被赋予变量。因此,如果您在调用test()之前调用onLocationChanged方法,则latlng的值尚未分配且没有值。  因此,解决方案是调用test()中的方法onLocationChanged或在调用方法之前使用null语句检查if

答案 1 :(得分:0)

检查你的onLocationChanged方法必须不要触发,使用onLocationChanged断点来查看你是否得到这些值。如果未调用此方法,则检查这必须是Location Class / API的委派问题。