【问题标题】:My ImageView doesn't refresh我的 ImageView 不刷新
【发布时间】: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里的图片是旧的。

标签: android imageview


【解决方案1】:

使用 startActivityForResilt() 启动您的相机活动以获得结果。然后重写函数onActivityResult()。这样当您的相机活动完成时 onActivityResult () 函数将被调用。除了在 onResume () 中更改之外,您还可以在该函数中更改图像。在onActivityResult()中查看活动结果状态。

【讨论】:

  • 我已经这样做了:protected void onActivityResult(int requestCode,int resultCode, Intent data) { mAplicationState=2; if (requestCode== CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { if (resultCode== RESULT_OK) { Toast.makeText(this, "Image saved to:\n"+fileUri.getPath(),Toast.LENGTH_LONG).show(); bImageSaved=true; mImageView1.setImageURI(fileUri); } ....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 2021-07-12
  • 2014-06-19
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
相关资源
最近更新 更多