我有我在的AsyncTask進度對話框的應用問題,在第1次所示的對話框: 我AsyncTask
從互聯網做一些葛亭數據doInBackGround()
,我開始取得進展對話框onPreExecute()
,完成對話框onPostExecute()
。安卓:進展不是(使用線程或的AsyncTask的longDuration操作)
我點擊按鈕時執行這個asyncTask。第一次當我點擊此按鈕(長時間操作發生時),進度對話框不顯示。但下次進度對話框顯示正常。
第一次運行AsyncTask
,進度對話框不顯示,可能是什麼問題?
這是OnClick方法:
public void onClickFind(View view){
new Task_Search().execute();
}
這是任務Task_Search
:
private class Task_Search extends AsyncTask<Void, Void, Void> {
@SuppressWarnings("deprecation")
protected void onPreExecute() {
showDialog(DIALOG_TASKING);
}
protected Void doInBackground(Void... unused) {
//some geting of web content here
}
@SuppressWarnings("deprecation")
protected void onPostExecute(Void unused) {
dismissDialog(DIALOG_TASKING);
}
}
進度對話框中MainActivity
定義:
@SuppressWarnings("deprecation")
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_TASKING:
mSearchDialog = new ProgressDialog(this);
mSearchDialog.setMessage("Searching for field number..");
mSearchDialog.setCancelable(true);
return mSearchDialog;
}
return super.onCreateDialog(id);
}
使用AsyncTask
之前我用單獨的線程來下載數據:在onClick
,我先開始progressDialog
然後線程,當線程結束時progressDialog
被採樣, 行爲是一樣的: 第一次點擊按鈕對話框沒有顯示,下次顯示它。
任何人都可以幫忙嗎?
的ShowDialog(INT)返回void,所以這是不可能的。 – VinceFR
是的,我誤以爲用戶定義的方法。我建議不要在任何情況下使用showDialog,但創建自己的ProgressDialog並顯示它。 – PravinCG
我同意,我也推薦它! – VinceFR