无法使用给定参数调用requestLocationUpdates

时间:2019-01-21 09:58:36

标签: android geolocation

private var locationManager: LocationManager? = null

/*onCreate()*/
locationManager = requireActivity()
        .getSystemService(LOCATION_SERVICE) as LocationManager

/*Listener is declared as */
private val locationListener = LocationListener {
     ...
}

 /*Then on button click I want to request location update and hope to see update in my listener*/
 locationManager?.requestLocationUpdates(
        "dsa",
        0.toLong(),
        0.toFloat(),
        locationListener!!
    )

我想测试requestLocationUpdates,但是它说函数不支持给定的参数。很奇怪,因为requestLocationUpdates具有String,Long,Float,LocationListener属性。是什么原因造成的?我在做错什么吗?

2 个答案:

答案 0 :(得分:0)

根据文档here

如果provider为null或此设备上不存在,则会抛出IllegalArgumentException 我认为您的设备中可能不存在“ dsa ”提供程序。您应该使用LocationManager.NETWORK_PROVIDERLocationManager.PASSIVE_PROVIDERLocationManager.GPS_PROVIDER

答案 1 :(得分:0)

您的代码应获得多个错误。原因是LocationListenerinterface,您将其视为其他东西。要解决此问题,请将LocationListener代码更改为以下代码段。

public val locationListener = object: LocationListener{ ... }

请记住要重写所有必要的方法。还要删除Non null断言!!,所以不需要这样做。错误现在应该消失了。