【问题标题】:ProgressDialog does not update in ActionBarSherlockProgressDialog 在 ActionBarSherlock 中不更新
【发布时间】:2013-04-10 09:38:18
【问题描述】:

我在对话框中看不到任何进度更新。

在活动类中:

void retrieveImages()
{
        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
    }

在异步任务中

@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 似乎也不起作用,它也只是在操作栏上显示进度微调器。我想要一个显示进度的对话框,而不是在操作栏上。

【问题讨论】:

    标签: java android actionbarsherlock progressdialog progress


    【解决方案1】:

    这里的诀窍是不要在activity中创建进度条,通过将Activity的上下文传递给AsyncTask,在AsyncTask中创建进度对话框,看看这里的代码

    void retrieveImages()
    {
            //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
    }
    

    在异步任务中

    在构造函数中

    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 相同

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多