我正在关注关于片段内定位工具包的本教程 -> 教程
一切都很好,我唯一改变的是我在方法removeLocationUpdatesWithCallback()
内部调用方法location_initialize()
。第一次删除位置但是当我更改片段并返回时removeLocationUpdatesWithCallback()
不起作用并且我收到失败消息:
第10804章
这是我的代码:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(getActivity());
settingsClient = LocationServices.getSettingsClient(getActivity());
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(500);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
location_initialize();
requestLocationUpdatesWithCallback();
}
private void location_initialize(){
if (null == mLocationCallback) {
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
img_user = Constants.img_url+Constants.GetLbd(getActivity(), "img_user");
if (locationResult != null) {
List<Location> locations = locationResult.getLocations();
if (!locations.isEmpty()) {
for (Location location : locations) {
usr_posicion = location;
CiudadCercana(location);
}
}
}
todasSucursales_func();
removeLocationUpdatesWithCallback();
}
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
if (locationAvailability != null) {
Toast.makeText(getActivity(), "Geolocalización no disponible por el momento", Toast.LENGTH_SHORT).show();
}
}
};
}
}
public void requestLocationUpdatesWithCallback() {
try {
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
LocationSettingsRequest locationSettingsRequest = builder.build();
// check devices settings before request location updates.
settingsClient.checkLocationSettings(locationSettingsRequest)
.addOnSuccessListener(new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
//check location settings success
//request location updates
fusedLocationProviderClient
.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.getMainLooper())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//"requestLocationUpdatesWithCallback onSuccess"
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
//"requestLocationUpdatesWithCallback onFailure:"
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
//"checkLocationSetting onFailure:"
int statusCode = ((ApiException) e).getStatusCode();
switch (statusCode) {
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
ResolvableApiException rae = (ResolvableApiException) e;
rae.startResolutionForResult(getActivity(), 0);
} catch (IntentSender.SendIntentException sie) {
//"PendingIntent unable to execute request."
}
break;
}
}
});
} catch (Exception e) {
//"requestLocationUpdatesWithCallback exception:"
}
}
private void removeLocationUpdatesWithCallback() {
try {
fusedLocationProviderClient.removeLocationUpdates(mLocationCallback)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(getActivity(), "removeLocationUpdatesWithCallback onSuccess", Toast.LENGTH_SHORT).show();
//"removeLocationUpdatesWithCallback onSuccess"
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
->>>>>>HERE IS MY ERROR<<<<<--
Toast.makeText(getActivity(), "removeLocationUpdatesWithCallback onFailure:" + e.getMessage(), Toast.LENGTH_SHORT).show();
//"removeLocationUpdatesWithCallback onFailure:" + e.getMessage()
}
});
} catch (Exception e) {
Toast.makeText(getActivity(), "removeLocationUpdatesWithCallback exception:" + e.getMessage(), Toast.LENGTH_SHORT).show();
//"removeLocationUpdatesWithCallback exception:" + e.getMessage()
}
}
我该如何解决,只有removeLocationUpdatesWithCallback()
方法失败:(