我越来越喜欢
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
if(location == null){
longitude = 0.0;
latitude = 0.0;
Log.i("CURRENT LONGITUDE", ""+longitude);
Log.i("CURRENT LATITUDE", ""+latitude);
}
Log.i("CURRENT LONGITUDE", ""+longitude);
Log.i("CURRENT LATITUDE", ""+latitude);
我得到的问题在线“double longitude = location.getLongitude();”这是MainActivity中的第93行;我越来越喜欢
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): java.lang.NullPointerException
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at com.demo.parsing.MainActivity$1.onClick(MainActivity.java:93)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.view.View.performClick(View.java:2364)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.view.View.onTouchEvent(View.java:4179)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.widget.TextView.onTouchEvent(TextView.java:6540)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.view.View.dispatchTouchEvent(View.java:3709)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.os.Handler.dispatchMessage(Handler.java:99)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.os.Looper.loop(Looper.java:123)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at android.app.ActivityThread.main(ActivityThread.java:4363)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at java.lang.reflect.Method.invokeNative(Native Method)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at java.lang.reflect.Method.invoke(Method.java:521)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-18 16:52:26.928: ERROR/AndroidRuntime(9598): at dalvik.system.NativeStart.main(Native Method)
这就奇怪了:
double longitude = location.getLongitude();
double latitude = location.getLatitude();
if(location == null){
看来你期望的位置可以为NULL。但是上面的两行使用位置来调用成员函数。如果它是NULL,那么你将得到一个nullpointerexception。
响应您的评论:你可以很容易地通过改变事物的秩序修复:
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER)
double latitude;
double longitude;
if(location == null){
longitude = 0.0;
latitude = 0.0;
Log.i("CURRENT LONGITUDE", ""+longitude);
Log.i("CURRENT LATITUDE", ""+latitude);
}else{
longitude = location.getLongitude();
latitude = location.getLatitude();
}
编辑2 如果你只需要快速浏览一下手册: http://developer.android.com/reference/android/location/LocationManager.html
你会看到:(emph mine)
返回一个位置,指示从最后一个k开始的数据 从给定提供商处获得的已知位置修复 。可以在不启动 提供程序的情况下完成此 。请注意,此位置 可能已过时,例如,如果 设备已关闭并移至 另一个位置。 如果当前禁用提供程序 ,则返回null。
+1为正确的答案,并更快:) – WarrenFaith 2011-03-18 11:37:50
是的朋友你是对的,所以我应该怎么做,如果我得到零经度或纬度 – shripal 2011-03-18 11:42:15
没有测试,所以可能有一个小错误在那里,但想法是明确的:检查第一,稍后分配:) – Nanne 2011-03-18 11:46:27
您可以添加整个堆栈跟踪吗? – 2011-03-18 11:20:56
和93是哪里? – fazo 2011-03-18 11:37:25