我有兩個不起作用的AsyncTask。必須有一些共同點,我做錯了。無法停止AsyncTask中的ProgressDialog
我的第一個活動需要很長時間來加載,所以我希望有一個progressDialog/Bar,但它失敗。我訪問的AsyncTask在我的onCreate與
new HeavyWorker(this).execute();
public class HeavyWorker extends AsyncTask < String , Context , Void > {
private ProgressDialog progressDialog ;
private Context targetCtx ;
public HeavyWorker (Context context) {
this.targetCtx = context ;
// this.needToShow = true;
progressDialog = new ProgressDialog (targetCtx) ;
progressDialog.setCancelable (false) ;
progressDialog.setMessage ("Retrieving data...") ;
progressDialog.setTitle ("Please wait") ;
progressDialog.setIndeterminate (true) ;
}
@ Override
protected void onPreExecute () {
progressDialog.show () ;
}
@ Override
protected Void doInBackground (String ... params) {
// Do Your WORK here
低於做工精細這些線時,在正常
「公共無效的onCreate(捆綁savedInstanceState)」區域
Ls = new LoadSettings(CreateAppointment.this);
gs = new GlobalSubs();
TimeZoneList();
此行動態填充一個微調框並阻止它工作,所以我評論了它。
// createTimezone();
ZoneList(Ls.getCountryZone());
該行還填補了spinnerbox動態地使我評論它
// createZone();
InitialiseUI();
CreateFileName();
return null ;
}
該區域從未達到過?
@ Override
protected void onPostExecute (Void result) {
if(progressDialog != null && progressDialog.isShowing()){
progressDialog.dismiss () ;
}
}
}
我的第二頁失敗,出現相同風格的問題。
我也嘗試在設置頁面中使用稍微不同的代碼。 與現在修正:
//
private class MyClass extends AsyncTask<Void, Void, Void>{
ProgressDialog mProgressDialog;
public MyClass(){
mProgressDialog = new ProgressDialog(Preferences.this);
mProgressDialog.setMessage ("Please Wait While Saving");
mProgressDialog.setTitle("Saving");
//
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog.show(Preferences.this, "Saving", "Please Wait a Sec");
}
@Override
protected Void doInBackground(Void... params)
{
saveSettings();
return null;
}
@Override
protected void onPostExecute(Void unused) {
它的工作的唯一辦法是,當我註釋掉該行並切換到不同的活動
// mProgressDialog.dismiss();
Toast.makeText(Preferences.this, "Your Settings Where Saved.", Toast.LENGTH_SHORT).show();
gotoMainPage();
}
}
private void gotoMainPage(){
Intent a = new Intent(this, Main_entry.class);
finish();
startActivity(a);
}
你能否描述你的問題而不中斷髮布的代碼?你的ASyncTask如何實現幾乎是無法理解的。 – WarrenFaith 2012-08-02 01:17:34