我想在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
,也无法按{{1}调用} 方法。
我可以知道如何解决这个问题吗?是否可以将变量从一个方法传递到另一个方法?
答案 0 :(得分:2)
问题是因为变量lat
纬度和lng
经度仅在调用onLocationChanged
时被赋予变量。因此,如果您在调用test()
之前调用onLocationChanged
方法,则lat
和lng
的值尚未分配且没有值。
因此,解决方案是调用test()
中的方法onLocationChanged
或在调用方法之前使用null
语句检查if
!
答案 1 :(得分:0)
检查你的onLocationChanged方法必须不要触发,使用onLocationChanged断点来查看你是否得到这些值。如果未调用此方法,则检查这必须是Location Class / API的委派问题。