в моем Android внутри действия У меня есть асинхронный вызов API карт Google внутри метода, см. Код ниже:
public void reverseGeocode(String lat, String lng) {
String geocodeApiUrl = getUrl(lat, lng);
GoogleService googleService = GoogleServiceBuilder.buildService(GoogleService.class);
Call<Address> geocodeRequest = googleService.geocodeAddress(geocodeApiUrl);
geocodeRequest.enqueue(new Callback<Address>() {
@Override
public void onResponse(Call<Address> call, Response<Address> response) {
if (response.errorBody() == null) {
if (response.body().getResults().length > 0) {
if (response.body().getResults()[0].getFormatted_address() != null) {
dropOffAddress = response.body().getResults()[0].getFormatted_address();
}
}
} else {
Toast.makeText(AdressPicker.this, "An error has occured", Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<Address> call, Throwable t) {
Toast.makeText(AdressPicker.this, "An error has occured", Toast.LENGTH_LONG).show();
}
});
}
этот метод вызывается внутри маркера карты Google onMarkerDragEnd функция обратного вызова, см. Код ниже:
@Override
public void onMarkerDragEnd(Marker marker) {
double lat = marker.getPosition().latitude;
double lng = marker.getPosition().longitude;
reverseGeocode(String.valueOf(lat), String.valueOf(lng));
marker.setSnippet(dropOffAddress);
marker.showInfoWindow();
editor.putString("dropOffAddress", dropOffAddress);
editor.putString("lat", String.valueOf(lat));
editor.putString("lng", String.valueOf(lng));
editor.apply();
}
Проблема здесь - первый раз, когда я перемещаю маркер, метод reverseGeocode вызывается, но его не ждут и onMarkerDragEnd продолжает свое выполнение и помещает нуль внутри значения переменной dropOffAddress , которая предназначена для отображения внутри фрагмента маркера.
Мой вопрос здесь КАК ЖДАТЬ для метода reverseGeocode - это ответ внутри onMarkerDragEnd перед продолжением выполнения?
Спасибо.