2013-04-10 58 views
0

我无法看到正在进行的任何进度更新对话框。ProgressDialog不会在ActionBarSherlock中更新

在活动类:

void reterieveImages() 
    { 
     mImageUriList=new ArrayList<String>(); 
     mImageUriList=Utils.fetchImages(this); 
     mProgressDialog=new ProgressDialog(this); 
      //progress dialog here is class level activity member 
     mProgressDialog.show(); 
     mProgressDialog.setIndeterminate(false); 
     mProgressDialog.setMessage("Processing Images.."); 
     mProgressDialog.setMax(100); 
     mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     mProgressDialog.setCanceledOnTouchOutside(false); 
     new GetImageAsyncTask(this, mImageUriList,mProgressDialog).execute(); 
      //passing progress dialog to async task 
    } 

在的AsyncTask

@Override 
    protected Void doInBackground(Void... params) 
    { 
    int progress_status; 
    float count=imageUriList.size(); 
    float increment=0; 
    float p=(increment/count)*100; 
     for(int i=0;i<count;i++) 
     { 
      increment++; 
      //do some operation 
      p=(increment/count)*100; 
      progress_status=Math.round(p); 
      publishProgress(progress_status); 
      Log.i(TAG, "progress value-"+progress_status); 
     } 
     return null; 
    } 
    @Override 
protected void onProgressUpdate(Integer... values) 
{ 
    //super.onProgressUpdate(values); 
    progressDialog.setProgress(values[0]); 
} 

我只能看到飞旋和消息 “处理图像..”,我没有看到任何进展酒吧/更新

我正在使用ActionBarSherLock,我也试过这个解决方案here也似乎没有工作,也只是显示在进度栏上的进度微调。我想要一个对话框来显示进度,而不是在操作栏上。

回答

0

这里的技巧是不是创建活动的进度条,通过传递活动的背景下进入的AsyncTask创建在的AsyncTask进度对话框,看看代码在这里

void reterieveImages() 
    { 
     //some method in sherlock activity 
     mImageUriList=new ArrayList<String>(); 
     mImageUriList=Utils.fetchImages(this); 
     new GetImageAsyncTask(this, mImageUriList).execute(); 
     //NOT passing progress dialog to async task,just activity context 
    } 

在的AsyncTask

在构造函数中

GetImageAsyncTask(Context mContext,ArrayList<String> mImageUriList) 
{ 
    //Other intializations 
    mProgressDialog=new ProgressDialog(mContext); 

    mProgressDialog=new ProgressDialog(this); 
     //progress dialog here is asynctask class member 
    mProgressDialog.setIndeterminate(false); 
    mProgressDialog.setMessage("Processing Images.."); 
    mProgressDialog.setMax(100); 
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    mProgressDialog.setCanceledOnTouchOutside(false); 
} 

现在onPreExecute(),显示/加载进度对话框

public void onPreExecute() 
{ 
    //show dialog box on pre execute 
    mProgressDialog.show(); 
} 

保持doInBackgroundonProgressUpdate相同