3

Please help, I can't dismiss ProgressDialog after AsyncTask complete. I searched for the answer but nothing found. This code works fine when I use Thread instead of AsyncTask. Have any ideas?

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);
   }
}
Boleslav
  • 35
  • 2
  • 6
  • - Just for clarity sake...you named your Context object "appContext." This is actually your Activity's context and NOT your Application's Context. These are two very different things in the world of Android. – dell116 Jun 10 '14 at 19:18

2 Answers2

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");
    }

Check and dismiss onPostExecute() -

    protected void onPostExecute() 
    {
        if(progressDialog != null && progressDialog.isShowing())
        {
            progressDialog.dismiss();
        }
     }
TheFlash
  • 5,997
  • 4
  • 41
  • 46
0

Try this

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

        dialog = new ProgressDialog(context);
    }

    @Override
    protected void onPostExecute(String result) {
        dialog.dismiss();
}
Benil Mathew
  • 1,638
  • 11
  • 23