У меня есть приложение, которое использует 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 дня на это, и это сводит меня с ума, есть идеи, почему это происходит?