Слушатель скольжения вызывается, когда это не должно быть - PullRequest
0 голосов
/ 24 мая 2019

У меня есть приложение, которое использует Firebase .Когда пользователь входит в систему, действие проверит, присутствуют ли пользовательские данные в базе данных Firestore , и доставит их в приложение, если оно присутствует.

Это код для этого (этоis OnCreate)

FirebaseFirestore
        .getInstance()
        .document("users/" + uID)
        .get()
        .addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    if (task.getResult().exists()) {
                        DocumentSnapshot documentSnapshot = task.getResult();
                        name.setText(documentSnapshot.getString("name"));
                        progressBar.setVisibility(View.VISIBLE);
                        Glide
                            .with(SetUserData.this)
                            .load(FirebaseStorage.getInstance().getReference("profile_images/" + uID))
                            .skipMemoryCache(true)
                            .diskCacheStrategy(DiskCacheStrategy.NONE)
                            .error(R.drawable.default_user_icon)
                            .listener(new RequestListener<Drawable>() {
                                @Override
                                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                                    if (e.getRootCauses().size() == 1 && e.getRootCauses().get(0) instanceof StorageException) {
                                        if (((StorageException) e.getRootCauses().get(0)).getErrorCode() == StorageException.ERROR_OBJECT_NOT_FOUND) {
                                            Toast.makeText(SetUserData.this, "testing", Toast.LENGTH_LONG).show();
                                            progressBar.setVisibility(View.GONE);
                                            progressHUD.dismiss();
                                        }
                                    } else {
                                        Toast.makeText(SetUserData.this, "Some error occurred", Toast.LENGTH_LONG).show();
                                        Log.e("Glide Exception", e.getMessage());
                                        finish();
                                    }
                                    return false;
                                }

                                @Override
                                public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                                    progressBar.setVisibility(View.GONE);
                                    progressHUD.dismiss();
                                    return false;
                                }
                        }).into(imageView);
                    }
                    else {
                        progressBar.setVisibility(View.GONE);
                        progressHUD.dismiss();
                    }
                } else {
                    Toast.makeText(SetUserData.this, "Some error occurred", Toast.LENGTH_LONG).show();
                    Log.e("Firestore error", task.getException().getMessage());
                    finish();
                }
            }
        }
    );

У меня есть действие, когда при нажатии ImageView запускается инструмент обрезки изображения .Это код для слушателя setOnClickListener():

imageView.setOnClickListener(
    new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CropImage
                    .activity()
                    .setGuidelines(CropImageView.Guidelines.ON)
                    .start(SetUserData.this); //get image and crop - custom library
        }
    }
);

И это метод onActivityResult():

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
        if (resultCode == RESULT_OK) {
            imageUri = result.getUri();
            try {
                imageView.setImageBitmap(MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri));
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
            result.getError().printStackTrace();
            Toast.makeText(this, "Some error has occurred, please try again", Toast.LENGTH_LONG).show();
        }
    }
}

Каждый раз, когда я пытаюсь установить изображение в ImageView метод onLoadFailed Glide listener() выполняется, и я понятия не имею, как и почему, все, что я знаю, это то, что это не должно.Я знаю, что он выполняется из-за toast(), который я вставил в этот метод.Код выше оператор Glide и ниже Firestore оператор выполняет NOT , только Glide listener() метод. Ссылка на видео

Я потратил 2 дня на это, и это сводит меня с ума, есть идеи, почему это происходит?

...