Java 纬度和经度为空
我正在开发一个应用程序,获取用户的当前位置并将其显示在地图上,以及屏幕上的纬度和经度,目前一切正常,地图显示我的当前位置,以及使用此代码在屏幕上显示纬度和经度Java 纬度和经度为空,java,android,google-maps,Java,Android,Google Maps,我正在开发一个应用程序,获取用户的当前位置并将其显示在地图上,以及屏幕上的纬度和经度,目前一切正常,地图显示我的当前位置,以及使用此代码在屏幕上显示纬度和经度 @Override public void onLocationChanged(Location location) { TextView tvLocation = (TextView) findViewById(R.id.tv_location); // Getting latitude of the current
@Override
public void onLocationChanged(Location location) {
TextView tvLocation = (TextView) findViewById(R.id.tv_location);
// Getting latitude of the current location
double latitude = location.getLatitude();
// Getting longitude of the current location
double longitude = location.getLongitude();
// Creating a LatLng object for the current location
LatLng latLng = new LatLng(latitude, longitude);
// Showing the current location in Google Map
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
// Zoom in the Google Map
googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
// Setting latitude and longitude in the TextView tv_location
tvLocation.setText("Latitude:" + latitude + ", Longitude:"+ longitude );
}
当我想在服务器上发送此纬度和经度时出现问题,它抛出空指针异常
01-04 23:27:38.759 29286-29286/io.xgear.geotag E/AndroidRuntime: FATAL
EXCEPTION: main
Process: io.xgear.geotag, PID: 29286
java.lang.NullPointerException
at io.xgear.geotag.MainActivity$GeoTagTask.<init>(MainActivity.java:234)
at io.xgear.geotag.MainActivity$1.onClick(MainActivity.java:181)
at android.view.View.performClick(View.java:4633)
at android.view.View$PerformClick.run(View.java:19270)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
他给了我错误
我添加的行
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
内部
GeoTagTask
location对象是不同的对象,也未初始化
Location location;
private String lat = Double.toString(location.getLatitude());
private String lng = Double.toString(location.getLongitude());
内部
GeoTagTask
location对象是不同的对象,也未初始化
Location location;
private String lat = Double.toString(location.getLatitude());
private String lng = Double.toString(location.getLongitude());
问题
问题在GeoTagTask
中
Location location;
private String lat = Double.toString(location.getLatitude());
private String lng = Double.toString(location.getLongitude());
您正在访问未初始化的变量
解决方案
将onCreate location设为全局变量
public class MainActivity extends FragmentActivity implements LocationListener {
Location location;
void onCreate() {
....
location = locationManager.getLastKnownLocation(provider);
....
}
}
在GeoTagTask
中使用全局变量
public class GeoTagTask extends AsyncTask<Void, Void, Boolean> {
private String lat = Double.toString(location.getLatitude());
private String lng = Double.toString(location.getLongitude());
...
}
公共类GeoTagTask扩展了AsyncTask{
私有字符串lat=Double.toString(location.getLatitude());
私有字符串lng=Double.toString(location.getLongitude());
...
}
问题
问题在GeoTagTask
中
Location location;
private String lat = Double.toString(location.getLatitude());
private String lng = Double.toString(location.getLongitude());
您正在访问未初始化的变量
解决方案
将onCreate location设为全局变量
public class MainActivity extends FragmentActivity implements LocationListener {
Location location;
void onCreate() {
....
location = locationManager.getLastKnownLocation(provider);
....
}
}
在GeoTagTask
中使用全局变量
public class GeoTagTask extends AsyncTask<Void, Void, Boolean> {
private String lat = Double.toString(location.getLatitude());
private String lng = Double.toString(location.getLongitude());
...
}
公共类GeoTagTask扩展了AsyncTask{
私有字符串lat=Double.toString(location.getLatitude());
私有字符串lng=Double.toString(location.getLongitude());
...
}
我知道这一点,但不知道如何解决:/使位置对象成为全局对象并从GeoTagTask
中删除。并确保onLocationChanged
为worksNo,它仍然提供空值。你能检查一下更新吗?我已经编辑了我的帖子。我知道这一点,但我不知道如何修复它/使位置对象成为全局对象并从GeoTagTask
中删除。并确保onLocationChanged
为worksNo,它仍然提供空值。你能检查一下更新吗?我已经编辑了我的帖子,我知道它会正常工作,因为我们现在使用的是全局变量,但我只是以防万一。即使位置改变了,它也能正常工作,对吗?(顺便说一句,它现在可以正常工作了,所以我会把它标记为正确:)我知道它会正常工作,因为我们现在使用的是全局变量,但我只是以防万一。即使位置改变了,它也能正常工作,对吗?(顺便说一句,它现在工作正常,所以我会将其标记为正确:))