【发布时间】:2021-08-27 20:26:39
【问题描述】:
我的 Android 应用程序中的用户个人资料图片更新出现问题。
简介
在我的MainActivity 中,我可以在两个片段之间切换,第一个是HomeFragment,第二个是UserProfileFragment。
在 UserProfile 中,用户可以决定上传一张新图片,所以我让用户从本地存储中选择图片,然后我将这张图片上传到FirebaseStorage 并获取下载链接。
我使用一个名为LoadImageTask 的类扩展了一个AsyncTask,它从url 下载图像,然后将生成的位图上传到我在UserProfileFragment 中的ImageView。
问题:
当用户上传新的个人资料图片时,LoadImageTask 会正确完成他的工作。问题是,当用户尝试更新他的头像时,ImageView 仍然显示旧图像,用户必须转到HomeFragment,然后返回UserProfileFragment 才能看到更新。因此,基本上更新工作,但个人资料图片更改不会立即显示。
我想做什么
我尝试了很多方法,例如使imageView 无效或尝试以其他方式强制imageView,但没有奏效。
public class LoadImageTask extends AsyncTask<String, Void, Bitmap> {
private ImageView image;
public LoadImageTask(ImageView image) {
this. image = image;
}
@Override
protected Bitmap doInBackground(String... urls) {
String downloadUrl = urls[0];
Bitmap bitmap = null;
try {
java.net.URL url = new java.net.URL(downloadUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
bitmap = BitmapFactory.decodeStream(input);
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
if(result != null) {
image.setImageBitmap(circleTransformation(result));
}
}
}
【问题讨论】:
标签: java android android-studio android-asynctask