【发布时间】:2013-05-18 03:35:20
【问题描述】:
我正在尝试制作一个拍摄照片并将其显示在 ImageView 上的应用程序。
我成功制作了这个,但是当我尝试制作新图片时,来自 ImagaView 的图像没有刷新。
例如:我按下一个按钮,就会创建一个指向相机的 Intent。我拍摄了图片'A',它保存在SD卡上路径'fileUri'的文件中。回到我的活动中,mImageView1 显示图片'A'。很好。它有效。
我尝试拍摄一张新的图片“B”,我调用 Intent 将图片保存在同一地址。图片已正确保存,但是当我在我的活动中返回时 mImageView1 显示旧的图片“A”。 下面是改变 ImageView 图像的代码:
@Override
public void onPause(){
super.onPause();
((BitmapDrawable) mImageView1.getDrawable()).setCallback(null);
}
@Override
public void onResume(){
super.onResume();
try{
if(bImageSaved)
{
mImageView1.setImageURI(fileUri);
mImageView1.postInvalidate();
}
}
catch(Exception e)
{
e.printStackTrace();
Log.e("Image2Notes", e.getMessage(), e);
}
我尝试了不同的方法来刷新 ImageView:mImageView1.postInvalidate();mImageView1.draw(...);,但没有成功。
如果你有提示,我会很高兴的。 谢谢,
【问题讨论】:
-
我不知道这是否是您唯一的问题,但
postInvalidate()适用于您不在UI线程上的情况。如果您在UI线程上,请使用invalidate(),看起来您是 -
新图片的文件路径在哪里改?您可能想使用
startActivityForResult()然后返回值并将图像设置在onActivityResult() -
我打电话给
invalidate()没有成功。我已经在onActivityResult()中设置了图像。我检查了路径,它是一样的。我看了看图片。 SD卡上的图片变了,是新的图片,只是ImageView里的图片是旧的。