Android 当图片从编辑配置文件片段更改时,更新导航抽屉中的配置文件图片

Android 当图片从编辑配置文件片段更改时,更新导航抽屉中的配置文件图片,android,android-fragments,sharedpreferences,navigation-drawer,android-glide,Android,Android Fragments,Sharedpreferences,Navigation Drawer,Android Glide,我有一个android应用程序,它有4个带有导航抽屉和个人资料图片的片段,但问题是,当我在编辑个人资料片段中更改/更新个人资料图片时,个人资料图片正在这个片段中更新,同时我还在共享首选项中保存个人资料URL(也上传到服务器),但当我回到家时,导航抽屉中的个人资料图片并没有更新为最新图片。我正在使用glidelib。为了加载配置文件pic,此图像正在加载存储在共享首选项中的URL。但当我关闭我的应用程序并在导航抽屉中打开个人资料图片时,会使用最新拍摄的照片进行更新。我不能要求用户在编辑个人资料片段

我有一个android应用程序,它有4个带有导航抽屉和个人资料图片的片段,但问题是,当我在编辑个人资料片段中更改/更新个人资料图片时,个人资料图片正在这个片段中更新,同时我还在共享首选项中保存个人资料URL(也上传到服务器),但当我回到家时,导航抽屉中的个人资料图片并没有更新为最新图片。我正在使用glidelib。为了加载配置文件pic,此图像正在加载存储在共享首选项中的URL。但当我关闭我的应用程序并在导航抽屉中打开个人资料图片时,会使用最新拍摄的照片进行更新。我不能要求用户在编辑个人资料片段中更改个人资料图片时关闭并打开应用程序。有没有办法解决这个问题

 //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,
    }

}
//从共享首选项获取图像URL。
imgUrl=Prefrences.getProfile\u picture(HomeActivity.this);
loadImageUrl(imgUrl);
//将图像加载到导航抽屉中,并在主活动中滑动
私有void loadImageUrl(字符串imgUrl){
if(imgUrl!=null&&!imgUrl.isEmpty()){
滑动。使用(这个)。加载(imgUrl)。占位符(R.drawable.avatar)
.crossFade()
.缩略图(0.5f)
.bitmapTransform(新循环转换(本))
.diskCacheStrategy(diskCacheStrategy.ALL)
.进入(img_档案);
}否则{

getUserDetails();可能Glide正在缓存您的图像

在这里检查前两个答案

您可以在创建导航活动时调用导航视图刷新数据

分离数据绑定部分,并像这样从onCreate()调用


EditProfileFragment
有抽屉吗?不,它没有抽屉,它只有图像视图来显示/更改图片,只有几个EditText字段用于姓名、电话号码等。尝试了上述答案,但没有成功,感谢您的响应。您在什么回调中得到图像?onCreate?是的,在主活动中,onCreate()方法它正在获取图像。请尝试将其放入onResume()中,并且仍然使用Glide执行无缓存操作谢谢,我会尝试此方法,并让您知道它是否适用于我:)
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));
        }
        }