获取最后位置返回空对象引用错误

Posted

技术标签:

【中文标题】获取最后位置返回空对象引用错误【英文标题】:get Last Location is returning null object reference error 【发布时间】:2016-10-14 11:36:29 【问题描述】:

嘿伙计们,我返回当前(最后已知)位置的方法正在杀死我的应用程序。我的错误日志没有显示出来,所以我能想到的唯一想法是权限/位置类发生了一些事情。如果可以,我将其设置为提取我的位置,否则返回预存储的 LatLng。请帮忙!这是我的代码

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:尝试在空对象引用上调用虚拟方法“double android.location.Location.getLongitude()” 在 com.example.kevin.memories.MapsActivity.getLocation(MapsActivity.java:251) 在 com.example.kevin.memories.MapsActivity.onMapReady(MapsActivity.java:93) 在 com.google.android.gms.maps.SupportMapFragment$zza$1.zza(未知来源) 在 com.google.android.gms.maps.internal.zzo$zza.onTransact(未知来源) 在 android.os.Binder.transact(Binder.java:387) 在 wv.a(:com.google.android.gms.DynamiteModulesB:82) 在 maps.ag.t$5.run(未知来源) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:158) 在 android.app.ActivityThread.main(ActivityThread.java:7224) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

【问题讨论】:

FusedLocationApi.getLastLocation() 返回 null;你应该检查那个案例 【参考方案1】:

null object reference 表示您引用了一个尚不存在的对象。所以这可能意味着您对该对象的调用在对象初始化之前首先出现。 如果确实能够获取某些内容,请尝试记录您的 getLastLocation

也可以查看SO thread 以获得更多答案。

【讨论】:

【参考方案2】:

确保您仅在 GoogleApiClient 连接后调用 getLastLocation(client)。您可以使用 client.isConnected() 方法检查它,也可以从 onConnected 方法调用它。

【讨论】:

以上是关于获取最后位置返回空对象引用错误的主要内容,如果未能解决你的问题,请参考以下文章

移动相机方法上的谷歌地图空对象引用[关闭]

无法从列表视图中获取项目位置:尝试在空对象引用上调用虚拟方法...

在获取当前纬度和经度时获取空对象引用 [重复]

setAdapter 上的空对象引用错误

无法在 android studio 中获取位置

如何摆脱空的 StyleProtoChain 对象引用?