2016-06-13 30 views
0

嘿家伙我的方法返回我当前(最后已知)的位置正在杀死我的应用程序。我的错误日志没有显示出来,所以唯一能想到的是使用权限/位置类正在发生。如果可以,我将它设置为拉取我的位置,否则返回预先存储的LatLng。请帮忙!这是我的代码get Last Location返回null对象引用错误

public LatLng getLocation(GoogleApiClient client) { 

    if(client == null){ 
     Log.d(null, "error:null client"); 
    }else{ 
     if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
      Location mLastLocation = FusedLocationApi.getLastLocation(client); 
      return new LatLng(mLastLocation.getLongitude(), mLastLocation.getLatitude()); 
     }else{ 
      Log.d(null, "error:permission fail"); 
     } 
    } 
return harrys; 
} 

这里是我错误堆栈

显示java.lang.NullPointerException:尝试上的空对象引用调用虚拟方法“双android.location.Location.getLongitude()” at com.example.kevin.memories.MapsActivity.getLocation(MapsActivity.java:251) at com.example.kevin.memories.MapsActivity.onMapReady(MapsActivity.java:93) at com.google.android.gms。 maps.SupportMapFragment $ zza $ 1.zza(Unknown Source) at com.go ogle.android.gms.maps.internal.zzo $ zza.onTransact(未知来源) at android.os.Binder.transact(Binder.java:387) at wv.a(:com.google.android.gms。 DynamiteModulesB:82) at maps.ag.t $ 5.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Native Method) at com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

+1

FusedLocationApi.getLastLocation()返回null;你应该检查这种情况 – antlersoft

回答

0

null object reference意味着你引用对象尚不存在。所以这可能意味着你对该对象的调用在对象初始化之前首先出现。 尝试记录您的getLastLocation,如果确实能够取东西。

另请检查此SO thread以获得更多答案。

0

请务必在GoogleApiClient获得连接后调用getLastLocation(client)。您可以使用client.isConnected()方法检查它,也可以从onConnected方法调用它。