3

J'ai une application Android qui a 4 fragments avec tiroir de navigation avec photo de profil, mais la chose est quand je modifie/mise à jour la photo de profil est mise à jour dans ce fragment et aussi dans l'URL de l'image dans Préférences partagées (également téléchargées sur le serveur), mais quand je reviens à Home Fragment, la photo de profil ne se met pas à jour. J'utilise Glide lib. pour charger la photo de profil, cette image charge l'URL qui est stockée dans les préférences partagées. Mais quand je ferme mon application et ouvre l'image de profil dans la mise à jour du tiroir de navigation avec la dernière photo prise. Je ne peux pas demander à l'utilisateur de fermer l'application et de l'ouvrir chaque fois qu'il change sa photo de profil dans Modifier le fragment de profil. Y a-t-il un moyen de résoudre ce problème?Mise à jour de l'image de profil dans le tiroir de navigation lorsque l'image est modifiée à partir de Modifier le profil Fragment

//getting image URL from Shared Preferences. 
     imgUrl = Prefrences.getProfile_picture(HomeActivity.this); 
     loadImageUrl(imgUrl); 

//loading image in navigation drawer with glide in Main Activity 
private void loadImageUrl(String imgUrl) { 
    if (imgUrl != null && !imgUrl.isEmpty()) { 
     Glide.with(this).load(imgUrl).placeholder(R.drawable.avatar) 
       .crossFade() 
       .thumbnail(0.5f) 
       .bitmapTransform(new CircleTransform(this)) 
       .diskCacheStrategy(DiskCacheStrategy.ALL) 
       .into(img_profile); 
    } else { 
     getUserDetails(); <-- this method is called when imgUrl is Null, 
    } 

} 
+0

'EditProfileFragment' a un tiroir? –

+0

Non, il n'a pas de tiroir, il a seulement l'image pour afficher/modifier la photo et quelques champs EditText pour le nom, le numéro de téléphone, etc. –

Répondre

0

Votre image est probablement mise en cache par Glide.

Vérifier les 2 premières réponses ici Remove image from cache in Glide library

+0

J'ai essayé les réponses mentionnées ci-dessus mais pas de chance, et merci d'avoir répondu. –

+0

Dans quel rappel obtenez-vous l'image? surCréer? –

+0

Oui dans l'activité principale, sur la méthode onCreate(), elle obtient l'image. –

0

Vous pouvez appeler la vue de navigation pour actualiser les données lorsque vous créez votre activité de navigation ....

séparé la liaison de données et une partie aussi appeler comme ça à partir du onCreate()

private void updateNavHeaderView(){ 
View headerView = navigationView.inflateHeaderView(R.layout.nav_header); 
     ImageView ivUserProfilePhoto = (ImageView) headerView.findViewById(R.id.ivUserProfilePhoto); 
     TextView userName = (TextView) headerView.findViewById(R.id.userName); 

     if (user != null && user.getUser_image() != null && !user.getUser_image().equals("")) { 
      Picasso.with(MainActivity.this) 
        .load(Config.BASE_IMAGE_URL+"/"+user.getUser_image()) 
        .placeholder(R.drawable.user_profile) 
        .resize(avatarSize, avatarSize) 
        .centerCrop() 
        .transform(new CircleTransformation()) 
        .into(ivUserProfilePhoto); 
     } else { 
      ivUserProfilePhoto.setImageDrawable(getResources().getDrawable(R.drawable.user_profile)); 
     } 
     } 
+0

merci, mal essayer ceci, et vous faire savoir si cela fonctionne pour moi :) –