2011-06-23 127 views
2

我正在處理的項目稍微複雜一點,但我做了這個簡單的測試,試圖找出我的代碼出了什麼問題。進度對話框從不解散。我曾經在某個地方沒有返回null。 'AsyncTask onPostExecute沒有被調用

public class SyncTestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     new mTask(this).execute(); 
    } 

    public class mTask extends AsyncTask<Void, Void, Void> { 

     Context mContext; 

     ProgressDialog progressDialog; 

     public mTask(Context aContext) { 
      mContext = aContext; 
     } 

     @Override 
     public void onPreExecute() { 

      progressDialog = new ProgressDialog(mContext); 
      progressDialog.setMessage("New..."); 
      progressDialog.show(); 
     } 

     @Override 
     public Void doInBackground(Void... params) { 
      return null; 
     } 

     public Void onPostExecute(Void... params) { 
      progressDialog.dismiss(); 
      return null; 


     } 
    } 

} 

回答

14

的參數是錯誤的,這樣做:

@Override 
    protected void onPostExecute(Void result) { 
     progressDialog.dismiss(); 
     return; 

    } 
+2

+1記住@Override 。會自動解決這個問題。 –

+0

+1是的,這只是我忘了給。現在,它正在工作。 – Praveenkumar

2

缺失@OverrideonPostExecute之前的表示法。另外return null不是必需的。

5

我與塞薩爾和賽倫德拉答案同意,但還是讓我在這一點改進:

@Override 
    protected void onPostExecute(Void result) { 

     if(progressDialog.isShowing()) 
     { 
     progressDialog.dismiss(); 
     } 
     return; 

    } 
相關問題