我创建了一个异步任务,并希望在doBackground的不同阶段更改进度对话框的消息。这是代码:

public class sc extends AsyncTask<Integer,String,Void>
    {
        ProgressDialog dialog;
        protected void onPreExecute()
        {
            dialog=new ProgressDialog(Loc.this);
            dialog.show();
        }
        @Override
        protected Void doInBackground(Integer... params)
        {

            onProgressUpdate("Contacting server..Please wait..");
            //Do some work
            onProgressUpdate("Processing the result");
            //Do some work
            onProgressUpdate("Calculating..");
            dialog.dismiss();
            return null;
        }
        protected void onProgressUpdate(String ui)
        {
            dialog.setMessage(ui);
        }


}

但是问题在于,进度对话框始终仅显示第一条消息。请帮助我找到解决方案。

最佳答案

protected Void doInBackground(Integer... params)
{
    onProgessUpdate("Contacting server..Please wait..");
    ...
}

Urrrm,不,这是行不通的。

尝试...
publishProgress("Contacting server..Please wait..");

您必须在doInBackground(..)中“发布”才能调用onProgressUpdate(...)

也不要在dialog.dismiss()中调用doInBackground(...),而是在onPostExecute(...)中调用它。

关于android - 在异步任务中难以更改进度对话框的消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9063112/

10-09 00:29