我有一种方法可以在地图上显示设备的当前位置。我使用<label id="foo" draggable="true">bar</label>
是因为它似乎是最准确的。
在FusedLocationProviderClient
上,我得到警告:
方法调用可能会产生java.Lang.NullPointerException
如何避免这种风险?为什么只与currentLocation.getLatitude()而不与currentLocation.getLatitude()
相关?
currentLocation.getLongitude()
答案 0 :(得分:0)
当IDE显示有关您的代码的信息时,它们可能会很奇怪或被误解,但我向您保证,它适用于getLongitude()以及实例方法或实例成员的任何其他调用,因为位置可以为空。
公共任务getLastLocation()
返回当前可用的最佳最新位置。如果某个位置不可用(这种情况很少发生),则为null 将被退回。遵守 位置权限将被返回。
此方法提供了一种简化的获取位置的方法。它是 特别适合不需要 准确的位置,并且不想为 位置更新。
因此,即使任务成功,任务的结果也可以为null。所有这些意味着您需要在使用位置之前检查位置是否为空。
答案 1 :(得分:0)
正如Red所指出的,如果基础对象为null,则在currentLocation
引用上调用任何其他方法将引发NullPointerException
,这可能是getLastLocation()
的结果。 IDE仅警告您有关对getLatitude()
的调用的原因,是因为它是对currentLocation
的第一个取消引用的调用。如果该调用引发异常,则其他方法调用甚至都不会进行。如果它没有引发异常,那么其他人也不会。因此,IDE不需要警告您有关它们的信息,因为此时对象为null最终将无关紧要。