更改 ImageView 源不会正确更改 ImageView 的图像

Changing ImageView Source Does not Change Properly Image of ImageView

其实它正在变化,但变成了空白!

在我的应用程序中,我将从数据库中获取我的图像路径并在主 activity 中显示它们。这个过程是通过在 DialogFragment 中选择图像的缩略图并将它们的记录 ID 发送到主 Activity 以及用于在 Fragment-Activity 之间进行通信的接口来实现的。 在这一点上,我将使用 Asynctask 内部 class 来获取所选图像的文件路径并将其显示到 ImageView。

一切正常,除了 ImageView 没有正确显示它,它只是显示空白!

P.S.: FilePath 是正确的,我在 onActivityResult 中的某个地方使用了它。

谢谢。

主要Activity代码:

public class AnnotateDiagramActivity extends Activity implements Communicator {

 @Override
    public void respond(String data , int requestCode) {
        //Passing Project ID from CPDialogFragment or PLDialogFragment


        switch(requestCode) {

        case OPEN_PROJECTID:
            PROJECTID = Integer.valueOf(data);
            loadProject(PROJECTID);
            ToastShort(data);
            break;
        default:
            break;

    }


}

  public class loadMainImage extends AsyncTask<Project,Integer,String>
{

    @Override
    protected String doInBackground(Project... params) {


        return project.GetFilePath();
    }

    protected void onPostExecute( String result) {
   //here is my main issue:

        fragmentView.setImageBitmap(new ImageDecoder().decodeFile(new File(project.GetFilePath())));

        fragmentView.postInvalidate();
    }

}

 public void loadProject(int ID)
{
    project = new Project();
    project= expertDbHelper.getProject(ID);
    SharedPreferences openedProject = getSharedPreferences("openedProject", 0);
    SharedPreferences.Editor projectEditor = openedProject.edit();
    projectEditor.putInt("id",project.GetID());
    projectEditor.putString("filePath",project.GetFilePath());
    projectEditor.commit();

    new loadMainImage().execute(project);
}

}

编辑以验证从文件路径返回图像:

 protected void onPostExecute( String result) {
        ImageDecoder imageDecoder = new ImageDecoder();
        Bitmap bmp = null;
        File file =new File(result); 
        if(file.isFile()) {
            bmp=imageDecoder.decodeFile(file,500);
            fragmentView.setImageBitmap(bmp);
            fragmentView.postInvalidate();
        }
        else
        { Log.e("Async Task Is File: " ,String.valueOf(file.isFile()));}

    }

我发现由于根据之前加载的图像计算出的一些标准,我的图像设置不正确,所以我检查了我的代码并在我的代码中找到需要重置的(布局布尔参数)。

protected void onPostExecute( String result) {

        ImageDecoder imageDecoder = new ImageDecoder();
        Bitmap bmp = null;
        File file =new File(result);
        Log.e("Async Task Result: " ,result);
        if(file.isFile()) {
            bmp=imageDecoder.decodeFile(file,500);
            fragmentView.reset();
            fragmentView.recycle();
            fragmentView.layout= false;
            fragmentView.setImageBitmap(bmp);
        }
        else
        {
            Log.e("Async Task Is File: " ,String.valueOf(file.isFile()));
        }

    }