【发布时间】:2020-01-12 07:37:54
【问题描述】:
我正在尝试使用 Geopoint 访问设备位置,但不幸的是,在空对象引用上抛出了一个错误是 double android.location.Location.getLatitude()' 并且已经阅读了很多教程,但我仍然面临这个问题
这是我的代码
private void getLastKnownLocation() {
if ( ActivityCompat.checkSelfPermission (this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission (this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED ) {
return;
}
mFusedLocationClient.getLastLocation ().addOnCompleteListener (new OnCompleteListener<Location> () {
@Override
public void onComplete(@NonNull Task<Location> task) {
if ( task.isSuccessful () ) {
Location location = task.getResult ();
GeoPoint geoPoint = new GeoPoint (location.getLatitude (),location.getLongitude ());
Log.d (TAG, "onComplete: latitude"+ geoPoint.getLatitude ());
Log.d (TAG, "onComplete: latitude"+ geoPoint.getLongitude ());
}
}
});
}
抛出的错误
- 进程:com.aquaapp.gesfasta,PID:23200 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“double android.location.Location.getLatitude()” 在 com.aquaapp.gesfasta.MuuzaMainActivity$1.onComplete(MuuzaMainActivity.java:107) 在 com.google.android.gms.tasks.zzj.run(未知来源:4) 在 android.os.Handler.handleCallback(Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6803) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:497) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)*
【问题讨论】: