2012-04-14 3 views
2

Я разрабатываю приложение Android 3.1 и выше.Диалог прогресса не обновляется на AsyncTask onProgressUpdate

У меня есть этот код, чтобы загрузить некоторые данные в формате JSON:

public class FormsListActivity extends ListActivity 
{ 
    private List<Form> mForms; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.formlist); 

     FormListAsyncTask formAsyncTask = new FormListAsyncTask(this); 
     formAsyncTask.execute("http://192.168.1.128/RestServiceImpl.svc/forms/"); 
    } 

    private class FormListAsyncTask extends AsyncTask<String, Integer, List<Form>> { 

     private Context mContext; 
     private ProgressDialog loadingDialog; 

     FormListAsyncTask(Context context) 
     { 
      mContext = context; 
      loadingDialog = new ProgressDialog(mContext); 
      loadingDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
      loadingDialog.setMessage("Downloading. Please wait..."); 
      loadingDialog.setCancelable(false); 
      loadingDialog.setMax(100); 
      loadingDialog.show(); 
     } 

     @Override 
     protected List<Form> doInBackground(String... url) 
     { 
      Log.v("doInBackground", "retreiving forms"); 
      return FormSpringController.LoadAll(url[0]); 
     } 
     // Just some example code to update your progress dialog 
     protected void onProgressUpdate(Integer... values) 
     { 
      Log.v("onProgressUpdate", "updating: " + ((int) ((values[0]/(float) values[1]) * 100))); 
      loadingDialog.setProgress((int) ((values[0]/(float) values[1]) * 100)); 
     } 

     protected void onPostExecute(List<Form> forms) 
     { 
      if (forms != null) 
      { 
       ListActivity act = (ListActivity) mContext; 
       act.setListAdapter(new FormAdapter(act, R.layout.form_list_item, forms)); 
       mForms = forms; 
      } 
      else 
      { 
       TextView errorMsg = (TextView) 
         ((FormsListActivity) mContext).findViewById(R.id.formErrorMsg); 
       errorMsg.setText("Problem downloading forms. Please try again later."); 
      } 
      loadingDialog.dismiss(); 
     } 
    } 
} 

Почему прогресс loadingDialog не обновляется на onProgressUpdate?

ответ

3

Я не нашел publishProgress(); в вашем коде.

вызов publishProgress() из вашего doInBackground(), который вызывает переопределение onProgressUpdate() неявно.

+0

Я следую этому примеру: http://twigstechtips.blogspot.com.es/2011/11/for-my-app-moustachify-everything-i-was.html – VansFannel

+0

попробуйте этот http: // stackoverflow. ком/вопросы/6450275/Android-хау к работе-с asynctasks-progressdialog –

Смежные вопросы