无法解析方法“requestLocationUpdates(String, int, int, LocationListener)”

问题描述 投票:0回答:1
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 );

我正在使用正确的一种,如果我用错了一种,请告诉我

java android locationmanager
1个回答
0
投票

您在所写的内容中遗漏了一个论点。 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();
        }
© www.soinside.com 2019 - 2024. All rights reserved.