Cannot resolve method 'requestLocationUpdates(String, int, int, LocationListener)'
try {
locationManager = (LocationManager) requireActivity().getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,3000,3,locationListener);
}
catch (Exception e){
e.printStackTrace();
}
编写这段代码时,它给了我错误,为什么会发生这种情况,我不明白当我使用
locationManager
之后的点时,有9个函数重载,我使用了.requestLocationUpdates(String provider,minTimeMs,minDistanceM,locationListner );
但仍然出现错误,请任何人帮助我。
.requestLocationUpdates(String provider,minTimeMs,minDistanceM,locationListner );
我正在使用正确的一种,如果我用错了一种,请告诉我
您在所写的内容中遗漏了一个论点。 requestLocationUpdates 没有重载只有四个参数的方法。 然而,有这个一个:
public void requestLocationUpdates (String provider,
long minTimeMs,
float minDistanceM,
Executor executor,
LocationListener listener)
我认为这是您试图调用的。请注意,有一个 Executor 类型的额外参数。
文档中有关于Executor的解释:
Executor:处理监听器回调的执行器,该值不能 为空。回调和侦听器事件通过此调度 Executor,提供了一种简单的方法来控制使用哪个线程。到 通过应用程序的主线程调度事件,您可以 使用 Context.getMainExecutor()。否则,提供一个执行者 分派到适当的线程。
因此,就您而言,您需要将其添加到您的通话中:
try {
locationManager = (LocationManager) requireActivity().getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
3000,
3,
Context.getMainExecutor().
locationListener);
}
catch (Exception e){
e.printStackTrace();
}