避免方法调用getLatitude可能会产生java.Lang.NullPointerException

时间:2019-05-15 22:32:27

标签: java android fusedlocationproviderclient

我有一种方法可以在地图上显示设备的当前位置。我使用<label id="foo" draggable="true">bar</label>是因为它似乎是最准确的。

FusedLocationProviderClient上,我得到警告:

  

方法调用可能会产生java.Lang.NullPointerException

如何避免这种风险?为什么只与currentLocation.getLatitude()而不与currentLocation.getLatitude()相关?

currentLocation.getLongitude()

2 个答案:

答案 0 :(得分:0)

当IDE显示有关您的代码的信息时,它们可能会很奇怪或被误解,但我向您保证,它适用于getLongitude()以及实例方法或实例成员的任何其他调用,因为位置可以为空。

  

公共任务getLastLocation()
  返回当前可用的最佳最新位置。

     

如果某个位置不可用(这种情况很少发生),则为null   将被退回。遵守   位置权限将被返回。

     

此方法提供了一种简化的获取位置的方法。它是   特别适合不需要   准确的位置,并且不想为   位置更新。

https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient.html#getLastLocation()

因此,即使任务成功,任务的结果也可以为null。所有这些意味着您需要在使用位置之前检查位置是否为空。

答案 1 :(得分:0)

正如Red所指出的,如果基础对象为null,则在currentLocation引用上调用任何其他方法将引发NullPointerException,这可能是getLastLocation()的结果。 IDE仅警告您有关对getLatitude()的调用的原因,是因为它是对currentLocation的第一个取消引用的调用。如果该调用引发异常,则其他方法调用甚至都不会进行。如果它没有引发异常,那么其他人也不会。因此,IDE不需要警告您有关它们的信息,因为此时对象为null最终将无关紧要。