2011-12-15 46 views
0

我有一個AlertDialog在和它有一個按鈕,如果選中,將啓動文件上傳到這樣的遠程服務器:啓動從AlertDialog(安卓)長時間運行的任務

builder.setMessage(text)     
.setCancelable(false) 
.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int id) { 
uploadFile(); 
}}) 

這工作正常,唯一的問題是uploadFile()可能需要很長時間(30秒到2分鐘)。我想用進度對話框(甚至是不確定的)替換AlertDialog,但我看不到如何從另一個對話框啓動一個對話框?

任何人都可以提供一些建議,我可以做到這一點。

感謝, Jarabek

回答

5

您可以使用AsyncTask這裏,讓您的ProgressDialogPreExecute()並呼籲在doingInBackground()方法和罷免ProgressDialog在PostExecute().

private class MyAsyncTask extends AsyncTask<Void, Void, Void> 
    { 

     ProgressDialog mProgressDialog; 
     @Override 
     protected void onPostExecute(Void result) { 
      mProgressDialog.dismiss(); 
     } 

     @Override 
     protected void onPreExecute() { 
      mProgressDialog = ProgressDialog.show(ActivityName.this, "Loading...", "Data is Loading..."); 
     } 

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

然後,只需調用MyAsyncTask使用new MyAsyncTask().execute();

+0

這正是我所期待的。謝謝。 – jarabek 2011-12-15 17:30:47

1

這樣做的最好方法 - 使用AsyncTask。在那裏你可以提供進步,並做你的長期行動