无法在AsyncTask完成后dismiss ProgressDialog

3

请帮忙,我无法在AsyncTask完成后关闭ProgressDialog(进度对话框)。我搜索了答案但没有找到。当我使用Thread而不是AsyncTask时,这段代码可以正常工作。有任何想法吗?

Context appContext;
ProgressDialog pd;

@Override
public void onCreate(Bundle savedInstanceState)
{
   super.onCreate(savedInstanceState);
   appContext=this;
   MyTask myTask=new MyTask(); 
   myTask.execute();
}


class MyTask extends AsyncTask<Void, Void, Void>
{
   @Override
   protected void onPreExecute() 
   {
      pd = ProgressDialog.show(appContext, "Wait..", "Loading data",
                    true, false);
  pd.setCancelable(false);
      super.onPreExecute();
   }

   @Override
   protected Void doInBackground(Void... arg0)
   {
  //something
  return null;
    }

   @Override
   protected void onPostExecute(Void result)
   {
      if (pd!=null)
        pd.dismiss();
  super.onPostExecute(result);
   }
}

仅为了澄清...您将Context对象命名为"appContext"。实际上,这是您Activity的上下文而不是应用程序的上下文。在Android世界中,这是两个非常不同的东西。 - dell116
2个回答

8
   private ProgressDialog progressDialog;   // class variable       

   private void showProgressDialog(String title, String message)
   {
        progressDialog = new ProgressDialog(this);

        progressDialog.setTitle(title); //title

        progressDialog.setMessage(message); // message

        progressDialog.setCancelable(false);

        progressDialog.show();
   }         

onPreExecute()

    protected void onPreExecute()
    {
        showProgressDialog("Please wait...", "Your message");
    }

检查并忽略onPostExecute() -

该方法涉及到IT技术相关内容。
    protected void onPostExecute() 
    {
        if(progressDialog != null && progressDialog.isShowing())
        {
            progressDialog.dismiss();
        }
     }

0

试试这个

        private Context context;
        private ProgressDialog dialog;
    public LastStageTask(Context cxt) {
        context = cxt;

        dialog = new ProgressDialog(context);
    }

    @Override
    protected void onPostExecute(String result) {
        dialog.dismiss();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接