2015-05-08 2 views
0

Я использую задачу Async для выполнения некоторых операций в моей базе данных. Во время операции я показываю диалог прогресса, и когда он заканчивается, я хочу отклонить его, но он не работает.Попытка отклонить прогресс Диалог

private ProgressDialog progressDialog; 

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

    progressDialog.setTitle(title); //title 

    progressDialog.setMessage(message); // message 

    progressDialog.setCancelable(true); 

    progressDialog.show(); 
} 

private class InsertFoodAsyncTask extends AsyncTask<Void, Integer, String>{ 

    @Override 
    protected String doInBackground(Void... arg0){ 
     InsertFood p = new InsertFood(Food.this,mBDD); 
     p.InsertFood(); 

     return "Executed"; 
    } 

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

    @Override 
    protected void onPostExecute(String result) { 
     if(progressDialog != null && progressDialog.isShowing()) 
     { 
      progressDialog.dismiss(); 
     } 
    } 
} 

Помогите мне? Большое спасибо !

+0

Если не progressDialog.dismiss() можно назвать в основном потоке пользовательского интерфейса? – SparkyRobinson

+0

@SparkyRobinson 'onPostExecute()' работает в основном потоке пользовательского интерфейса. –

+0

Я только что протестировал этот код, и он отлично справился с тем, что у меня есть 'InsertFoodAsyncTask' как внутренний класс Activity. –

ответ

0

В вашем коде все кажется правильным. onPostExecute() уже запустили его на нити ui. Но постарайтесь также проверить это.

getActivity().runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        if(progressDialog != null && progressDialog.isShowing()) 
        { 
         progressDialog.dismiss(); 
        } 
       } 
      }); 
+0

Он работает без изменений, я также использовал метод вызова диалога прогресса в onResume, поэтому он был запущен два раза ... извините за потерю времени! – Kmel

0

Попробуйте,

заменить:

progressDialog.show(); 

для:

progressDialog = progressDialog.show(); 
Смежные вопросы