【问题标题】:com.google.android.gms.location.LocationListener cannot be converted to android.location.LocationListenercom.google.android.gms.location.LocationListener 无法转换为 android.location.LocationListener
【发布时间】:2016-06-17 13:55:40
【问题描述】:

我收到以下错误

Error:(197, 28) error: no suitable method found for requestLocationUpdates    (String,long,float,com.google.android.gms.location.LocationListener) method LocationManager.requestLocationUpdates (String,long,float,android.location.LocationListener) is not applicable
(argument mismatch; com.google.android.gms.location.LocationListener cannot be converted to android.location.LocationListener)
method LocationManager.requestLocationUpdates(String,long,float,PendingIntent) is not applicable
(argument mismatch; com.google.android.gms.location.LocationListener cannot be converted to PendingIntent)

method LocationManager.requestLocationUpdates(long,float,Criteria,PendingIntent) is not applicable
(argument mismatch; String cannot be converted to long)

在尝试运行我的代码时,尽管此行在 Android Studio 中带有红色下划线

LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,LOCATION_REFRESH_TIME, LOCATION_REFRESH_DISTANCE,位置监听器);

我仍然没有找到不匹配的来源,并感谢任何提示或帮助

这是我的位置监听器:

private final LocationListener LocationListener = new LocationListener() {
        @Override
        public void onLocationChanged(final Location location) {
            updateLocation(location);
        }

它调用以下updateLocation:

 protected void updateLocation(Location location) {

      if (location != null && gpsFix == true) {
          addPoint(location);

          if (previousLocation != null)
              distanceTraveled += location.distanceTo(previousLocation);
      }
      previousLocation = location;
  }

调用addPoint

  public void addPoint(Location location) {
      locations.add(location);
  }

Locations 是一个位置对象的 ArrayList。除此之外,我还有以下声明:

 float LOCATION_REFRESH_DISTANCE = 1;
 long LOCATION_REFRESH_TIME = 100;

编辑:当我尝试这个时

LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,LOCATION_REFRESH_TIME, LOCATION_REFRESH_DISTANCE, (android.location.LocationListener)LocationListener);

我看到以下内容:无法从静态上下文引用非静态方法“requestLocationUpdates (...)”。

这些是我的导入:

import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.Paint;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.FrameLayout;
import android.location.LocationListener;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.PolylineOptions;
import java.util.ArrayList;
import java.util.List;

【问题讨论】:

    标签: java android maps listener


    【解决方案1】:

    解决方案

    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
            float LOCATION_REFRESH_DISTANCE = 1;
            long LOCATION_REFRESH_TIME = 100;
            mlocationListener = new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
    
                    updateLocation(location);
                }
    
                @Override
                public void onStatusChanged(String s, int i, Bundle bundle) {
    
                }
    
                @Override
                public void onProviderEnabled(String s) {
    
                }
    
                @Override
                public void onProviderDisabled(String s) {
    
                }
            };
    
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,LOCATION_REFRESH_TIME, LOCATION_REFRESH_DISTANCE, mlocationListener);
        }
    

    我在 LocationManager 中有一个大写 L。这就是为什么我没有访问对象 locationManager(带有小 l)。就这样!

    LocationManager.requestLocationUpdates 方法 - 大写 L- 是一个静态方法,属于一个类(属于一个类型而不是一个对象),并且与代表该类的任何对象没有关系,或者换句话说没有与 LocationManager 类型的任何对象的关系

    【讨论】:

      猜你喜欢
      • 2018-08-15
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2016-06-30
      • 2016-01-14
      相关资源
      最近更新 更多