com.google.android.gms.location.LocationListener 无法转换为 android.location.LocationListener
com.google.android.gms.location.LocationListener cannot be converted to android.location.LocationListener
我收到以下错误
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, LocationListener);
我仍然没有找到不匹配的来源,如果有任何提示或帮助,我将不胜感激
这是我的位置侦听器:
private final LocationListener LocationListener = new LocationListener() {
@Override
public void onLocationChanged(final Location location) {
updateLocation(location);
}
它调用以下更新位置:
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 是 Location 对象的 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;
解决方案
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。这就是为什么我没有访问 Object locationManager(带有一个小的 l)。就这样!
方法 LocationManager.requestLocationUpdates - 大写 L- 是一个静态方法并且属于 class (属于类型而不是对象)并且与表示的任何对象无关class 或换句话说与 LocationManager
类型的任何对象无关
我收到以下错误
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, LocationListener);
我仍然没有找到不匹配的来源,如果有任何提示或帮助,我将不胜感激
这是我的位置侦听器:
private final LocationListener LocationListener = new LocationListener() {
@Override
public void onLocationChanged(final Location location) {
updateLocation(location);
}
它调用以下更新位置:
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 是 Location 对象的 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;
解决方案
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。这就是为什么我没有访问 Object locationManager(带有一个小的 l)。就这样!
方法 LocationManager.requestLocationUpdates - 大写 L- 是一个静态方法并且属于 class (属于类型而不是对象)并且与表示的任何对象无关class 或换句话说与 LocationManager
类型的任何对象无关