我试图获得智能手机的全球定位系统,如下代码所示:
在Activity.java
中,我使用以下代码获取GPS。
private GPSClass gps;
gps.getGPSLocation();
在GPSClass.java
中
public void getGPSLocation(){
FusedLocationProviderClient mLocationClient = LocationServices.getFusedLocationProviderClient(mContext);
mLocationClient.getLastLocation().addOnCompleteListener(mContext, new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if(task.isSuccessful()){
mLocation = task.getResult();
Log.i("getLocation---LOCATION", mLocation.getLatitude() + "/"
+ mLocation.getLongitude());
}
}
});
}
但是如何在GPSClass.java
中返回值呢?
我已经试着替换
public void onComplete
而不是
public Location onComplete
但它显示了错误
'onComplete(Task<Location>)' in 'Anonymous class derived from com.google.android.gms.tasks.OnCompleteListener' clashes with 'onComplete(Task<TResult>)' in 'com.google.android.gms.tasks.OnCompleteListener'; attempting to use incompatible return type
我错过了什么吗?如何在OnCompleteListener
中返回值?提前谢谢。
发布于 2018-09-20 08:51:57
您可以使用回调。
public void getGPSLocation(GPSCallback callback){
FusedLocationProviderClient mLocationClient = LocationServices.getFusedLocationProviderClient(mContext);
mLocationClient.getLastLocation().addOnCompleteListener(mContext, new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if(task.isSuccessful()){
mLocation = task.getResult();
Log.i("getLocation---LOCATION", mLocation.getLatitude() + "/"
+ mLocation.getLongitude());
callback.onLocation(mLocation);
}
}
});
}
创建一个名为GPSCallback
的接口。
interface GPSCallback{
void onLocation(Location location);
}
并使用回调调用该方法。
gps.getGPSLocation(new GPSCallback() {
void onLocation(Location location) {
// do what you need to do with the location
}
});
https://stackoverflow.com/questions/52420903
复制相似问题