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().

0 ответов

Другие вопросы по тегам