[英]Using an AsyncTask to update a user profile image in Android
我的 android 应用程序中的用户个人资料图片更新出现问题。
介绍
在我的MainActivity
中,我可以在两个 Fragment 之间切换,第一个是HomeFragment
,第二个是UserProfileFragment
。 在 UserProfile 中,用户可以决定上传一张新图片,所以我让用户从本地存储中选择图片,然后将此图片上传到FirebaseStorage
并获取下载链接。 I use a class called LoadImageTask
extending an AsyncTask
that download the image from url and then upload the resulting bitmap into an ImageView
that i have in my UserProfileFragment
.
问题:
当用户上传新的个人资料图片时, LoadImageTask
会正确完成他的工作。 问题是,当用户尝试更新他的个人资料图片时, ImageView
仍然显示旧图像,用户必须 go 到HomeFragment
,然后 Z34D1F91FB2E514B8576FAB1A75A89A6B 更新到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)); } } }
当您从本地存储中选择图像时,您可以从 onActivityResult 中的 uri 将图像设置为 imageView。
imageView.setImageURI(imgUri);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.