实际上它正在变化但变成了空白!
在我的应用程序中,我将从数据库中获取我的图像路径并在主要活动中显示它们。此过程通过在DialogFragment中选择图像的缩略图并将其记录ID发送到主Activity,并在Fragment-Activity之间进行通信来实现。 在这一点上,我将使用Asynctask内部类来获取所选图像的FilePath并将其显示给ImageView。
Everythings完美无缺,除了ImageView没有正确显示它,它只显示空白!
P.S。:FilePath是正确的,我在应用程序的某个地方的onActivityResult中使用它。
谢谢。
主要活动代码:
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()));}
}
答案 0 :(得分:0)
我发现由于从先前加载的图像计算的某些条件,我的图像设置不正确,所以我检查我的代码并在我的代码中查找(布局布尔参数)需要重置。
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()));
}
}