[英]Changing ImageView Source Does not Change Properly Image of ImageView
實際上,它正在改變,但是變成空白!
在我的應用程序中,我將從數據庫中獲取我的圖像路徑,並在主要活動中顯示它們。 這個過程是通過在DialogFragment中選擇圖像的縮略圖並將其記錄ID與用於在Fragment-Activity之間進行通信的接口發送給Main Activity來實現的。 此時,我將使用Asynctask內部類獲取所選Image的FilePath並將其顯示給ImageView。
一切正常,除了ImageView不能正確顯示而只是空白!
PS: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()));}
}
我發現由於某些條件是根據先前加載的圖像計算得出的,因此我的圖像設置不正確,因此我檢查了代碼並在我的代碼中找到了需要重新設置的(布局布爾參數)。
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()));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.