2013-07-11 3 views
3

Пожалуйста, помогите, я не могу уволить ProgressDialog после завершения AsyncTask. Я искал ответ, но ничего не нашел. Этот код отлично работает, когда я использую Thread вместо AsyncTask. Есть идеи?Не удается уволить ProgressDialog после завершения 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); 
    } 
} 
+0

- Просто ради ясности ... вы назвали объект Context «appContext». Это на самом деле контекст вашей деятельности, а не Контекст вашего приложения. Это две совершенно разные вещи в мире Android. – dell116

ответ

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() -

protected void onPostExecute() 
    { 
     if(progressDialog != null && progressDialog.isShowing()) 
     { 
      progressDialog.dismiss(); 
     } 
    } 
+0

Хороший чувак ... –

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(); 
} 
Смежные вопросы