【问题标题】:LatLng gives null pointer exceptionLatLng 给出空指针异常
【发布时间】:2020-03-06 11:58:32
【问题描述】:

我正在使用 android studio 上的谷歌地图。问题是当我访问 DriverLatLngoutside onLocationChanged 时,它给了我空指针异常。 我的 onLocationChanged 方法如下:-

@Override
public void onLocationChanged(Location location) {
    LastLocation = location;
    double lat = LastLocation.getLatitude();
    double lon = LastLocation.getLongitude();
    DriverLatLng = new LatLng(lat,lon);
    Log.v("data", DriverLatLng.toString());
    mMap.moveCamera(CameraUpdateFactory.newLatLng(DriverLatLng));
    mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}

现在当我在其他任何地方使用 DriverLatLng 时

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.android.gms.maps.model.LatLng.toString()' on a null object reference

【问题讨论】:

  • 也许您在调用 onLocationChanged 之前尝试访问 driverLatLng 对象,因为如果您使用的是 android 模拟器并且它的位置没有改变
  • 正如@Madonabulia 所说,可能是在初始化driverLatlng之前引起的
  • 我已将间隔设置为 1 秒,因此在应用程序运行时的任何给定时刻都不能为空。我在真实设备上运行它
  • 添加了相关标签

标签: java android google-maps nullpointerexception on-location-changed


【解决方案1】:

在使用 DriverLatLng 之前,请确保 locationlatlon 不为空。

试试这个:

@Override
public void onLocationChanged(Location location) {
    LastLocation = location;
    double lat = LastLocation.getLatitude();
    double lon = LastLocation.getLongitude();
    if(lat == null || lon == null){
       Log.v("nulls", "lat and/or lon are null");
    } else{
       DriverLatLng = new LatLng(lat,lon);
       Log.v("data", DriverLatLng.toString());
       mMap.moveCamera(CameraUpdateFactory.newLatLng(DriverLatLng));
       mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
    }
}

另外,请注意 GoogleApiClient 已弃用。您需要使用GoogleApi。查看this post

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2014-09-06
    • 2014-07-19
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多