2012-04-14 15 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();が見つかりません。

doInBackground()からonProgressUpdate()を暗黙的に呼び出してpublishProgress()を呼び出します。

+0

私はこの例に従っています:http://twigstechtips.blogspot.com.es/2011/11/for-my-app-moustachify-everything-i-was.html – VansFannel

+0

このhttp:// stackoverflowを試してください。 com/questions/6450275/android-how-to-work-asynctasks-progressdialog –