Backendless: обновление текущего пользователя изнутри handleResponse
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SELECT_PICTURE) {
if (resultCode == RESULT_OK) {
Bitmap bitmap = null;
if (data != null) {
try {
bitmap = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData());
} catch (IOException e) {
e.printStackTrace();
}
userPicImageView.setImageBitmap(bitmap);
dialog = new ProgressDialog(this);
dialog.setTitle("Updating profile picture");
dialog.setMessage("Please, wait");
dialog.show();
final BackendlessUser user = Backendless.UserService.CurrentUser();
Backendless.Files.Android.upload(bitmap, Bitmap.CompressFormat.JPEG, 100, "profile_pic_" + user.getObjectId() + System.currentTimeMillis(), "images", new AsyncCallback<BackendlessFile>() {
@Override
public void handleResponse(final BackendlessFile response) {
Log.d(TAG, "updated profile pic");
Log.d(TAG,"FILE URL IS "+response.getFileURL().toString());
backendlessFile = response;
if (dialog.isShowing()) {
dialog.dismiss();
}
String currentUserID = Backendless.UserService.loggedInUser();
Backendless.UserService.findById(currentUserID, new AsyncCallback<BackendlessUser>() {
@Override
public void handleResponse(BackendlessUser usr) {
Log.d(TAG,"CURRENT USER is "+usr.getProperty("name").toString());
usr.setProperty("image", response.getFileURL().toString());
Backendless.UserService.update(usr);
}
@Override
public void handleFault(BackendlessFault fault) {
[**problem here**-->] Log.e(TAG,"COULD NOT LOAD user");
}
});
}
@Override
public void handleFault(BackendlessFault fault) {
Log.e(TAG, "error " + fault.getMessage());
}
});
}
}
}
}
Приведенный выше код обрабатывает случай, когда пользователь обновляет свой профиль изображением из галереи. Она загружает файл прямо в хранилище файлов Backendless. В таблице "Пользователи" есть столбец "изображение", в котором хранится ссылка на изображение профиля. Я пытаюсь найти текущего пользователя и обновить его строку, установив в поле изображения ссылку на загруженный файл, но в журналах говорится, что они не могут получить доступ к пользователю (в приведенном выше коде расположение ошибки помечено как проблема). Это все связано с асинхронными запросами? Как это можно исправить?
[EDIT] Я понял, что все это действительно связано с асинхронными вызовами. Дело в том, что Backenledss AsyncCallback, похоже, не имеет метода onPostExecute().