Java 向双精度数组添加双精度值时出错
我试图将位置值添加到一个双数组中,但它给了我nullpointerexcetion。我请求像这样的位置更新Java 向双精度数组添加双精度值时出错,java,android,nullpointerexception,double,locationmanager,Java,Android,Nullpointerexception,Double,Locationmanager,我试图将位置值添加到一个双数组中,但它给了我nullpointerexcetion。我请求像这样的位置更新 if (buttonView.isChecked()) { if (!manager .isProviderEnabled(LocationManager.GPS_PROVIDER)) { mylocation = mana
if (buttonView.isChecked()) {
if (!manager
.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
mylocation = manager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
location_checked = true;
} else {
manager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 5000, 0,
listener);
location_checked = true;
}
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
5000,0, listener);
然后我将传入的位置值设置为myLocation
LocationListener listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
mylocation = location;
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
};
之后,我尝试将这些值添加到一个双数组中,但这会导致错误,并在此时使我的应用程序崩溃
double[] locationData = new double[] {mylocation.getLatitude(),
mylocation.getLongitude() };
你应该这样做:
@Override
public void onLocationChanged(Location location) {
double lat = location.getLatitude();
double lng = location.getLongitude();
setlocationData(lat, lng);
}
因为在从LocationChanged设置位置之前,它是空的
LocationManager获得de GPS信号需要时间。显然
mylocation
是null
。你没有提供足够的信息让我们猜测为什么它没有被设置。你确定发生了onLocationChanged
吗?可能侦听器在locationData实例化之前没有得到第一次更新?是否侦听器没有得到任何更新,我试图发送数据