Предварительный просмотр не обновляется при повторном нажатии на imagePicker - PullRequest
0 голосов
/ 22 мая 2019

У меня есть кнопка для выбора изображения, которое отображает предварительный просмотр выбранного изображения, все работает нормально, за исключением того, что если пользователь щелкнет снова перед отправкой изображения, я бы хотел, чтобы предварительный просмотр обновился. Я не уверен, какие строки кода мне нужно показать (не понимая, в чем проблема), поэтому не стесняйтесь спрашивать.

Я не сбрасываю картинку, когда нажата кнопка отправки, но она работает. Я использовал imageButton для первого клика и imageView для второго клика (оба кода onClick похожи). (Бонусный вопрос пользователь может выбрать jpg и png, он работает, но я не уверен, что мой код подходит для этого).

Заранее благодарю за внимание и помощь.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_IMAGE_CAPTURE || requestCode == REQUEST_GALLERY_IMAGE) {
        if (resultCode == RESULT_OK) {
            selectedImageUri = data.getData();
            if (selectedImageUri != null) {
                UCrop.Options options = new UCrop.Options();
                options.setCompressionFormat(Bitmap.CompressFormat.PNG);
                options.setCompressionQuality(100);
                options.setShowCropGrid(true);

                UCrop.of(selectedImageUri, Uri.fromFile(new File(getCacheDir(), "pic.png")))
                        .withAspectRatio(1, 1)
                        .withOptions(options)
                        .start(this);
            }
        }
    }
    if (requestCode == UCrop.REQUEST_CROP) {
        if (resultCode == RESULT_OK) {
            progresspicbar.setVisibility(View.VISIBLE);
            selectedImageUri = UCrop.getOutput(data);
            try {
                File compressedFile = new Compressor(this).setCompressFormat(Bitmap.CompressFormat.PNG).setQuality(50).setMaxHeight(96).setMaxWidth(96).compressToFile(new File(selectedImageUri.getPath()));
                mPhotoPreview.setVisibility(View.VISIBLE);
                mPhotoPreview.setImageURI(Uri.fromFile(compressedFile));
                mPhotoPickerButton.setVisibility(View.GONE);

                storageReference.putFile(selectedImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onComplete(@NonNull final Task<UploadTask.TaskSnapshot> task) {
                        if (task.isSuccessful()) {
                            storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {
                                    mPhotoUrl = uri.toString();
                                    progresspicbar.setVisibility(GONE);
                                    mSendButton.setEnabled(true);
                                }
                            }).addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    progresspicbar.setVisibility(GONE);
                                    if (mPhotoUrl.isEmpty()) {
                                        if (mPhotoPreview.getVisibility() == View.VISIBLE) {
                                            mSendButton.setEnabled(false);
                                            mPhotoPreview.setVisibility(GONE);
                                            mPhotoPickerButton.setVisibility(View.VISIBLE);
                                        }
                                    }
                                }
                            });
                        } else if (mPhotoUrl.isEmpty()) {
                            progresspicbar.setVisibility(GONE);
                            if (mPhotoPreview.getVisibility() == View.VISIBLE) {
                                mSendButton.setEnabled(false);
                                mPhotoPreview.setVisibility(GONE);
                                mPhotoPickerButton.setVisibility(View.VISIBLE);
                            }
                        }
                    }
                });
            } catch (IOException e) {
                progresspicbar.setVisibility(GONE);
                e.printStackTrace();
            }
        } else if (resultCode == UCrop.RESULT_ERROR) {
            progresspicbar.setVisibility(GONE);
            Log.e("Error", "Crop error:" + Objects.requireNonNull(UCrop.getError(data)).getMessage());
        }
    }
}
...