gpt4 book ai didi

android - ImageView 不刷新/反射(reflect)更改

转载 作者:IT老高 更新时间:2023-10-28 23:10:01 27 4
gpt4 key购买 nike

我正在使用照片选择器 Intent 选择图像并将其写入应用程序专用文件。我的大部分重要源代码如下所示。一旦我按下一个按钮并执行第一个图像选择 Intent ,它就会成功更新 ImageView 。但是,一旦我再次按下图像选择按钮(在同一个 Activity 中), ImageView 就不会更新,除非我退出并重新启动 Activity 。所以我知道图片保存成功了,但是为什么布局中的 ImageView 不会刷新或更新呢?

public void onResume() {
super.onResume();
ImageView myImageView = (ImageView)findViewById(R.id.contact_image);
if (hasImage) {
myImageView.setImageURI(Uri.fromFile(getFileStreamPath(TEMP_PHOTO_FILE)));
}
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case PHOTO_PICKED:
if (resultCode == RESULT_OK) {
if (data != null) {
Bundle extras = data.getExtras();
if (extras != null) {
hasImage = true;
bmp = (Bitmap) extras.get("data");
}
}
}
break;
}
}

private OnClickListener mChooseImage = new OnClickListener() {
@Override
public void onClick(View v) {
try {
// Launch picker to choose photo for selected contact
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", ICON_SIZE);
intent.putExtra("outputY", ICON_SIZE);
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile()));
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, PHOTO_PICKED);
} catch (ActivityNotFoundException e) {
// LOG THIS
}
}
};

private File getTempFile() {
try {
if (!hasImage) {
FileOutputStream fos = openFileOutput(TEMP_PHOTO_FILE, MODE_WORLD_WRITEABLE);
fos.close();
}
return getFileStreamPath(TEMP_PHOTO_FILE);
} catch (FileNotFoundException e) {
// To be logged later
return null;
} catch (IOException e) {
// To be logged later
return null;
}
}

根据 Activity 结果,我将 ImageView 的图像 URI 设置为此文件。

当它第一次完成时,ImageView 会发生变化以反射(reflect)这一点。但是,如果我尝试再次选择图像(相同的 Activity ),ImageView 将不会更新,直到我退出并重新进入 Activity 。我不确定为什么会发生这种情况,是因为我每次都试图写入 temp.jpg 吗?还是我需要以某种方式刷新布局以反射(reflect) ImageView 中的变化?

最佳答案

从ImageView源码来看,如果你用相同的URI调用setImageURI,ImageView不会重新加载图片。您可以尝试通过将图像写入另一个文件来更改 URI。

关于android - ImageView 不刷新/反射(reflect)更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4458565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com