2016-09-16 26 views
-1

ProgressDialogonPostExecuteAsyncTaskに表示する方法。asyncTaskのonPostExecuteに別の進行状況ダイアログを表示

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    pd = new ProgressDialog(context); 
    pd.setMessage("Retrieving User Banks..."); 
    pd.show(); 
} 

@Override 
protected void onPostExecute(String feed) { 
    pd.dismiss(); 
    ... 
} 

onPostExecute方法で別の進捗ダイアログを追加するにはどうすればよいですか?

別の進行状況ダイアログをonPostExecuteに表示したいとします。

私は、次のコードを試してみました: -

ProgressDialog progressDialog = new ProgressDialog(context); 
progressDialog.setMessage("Progess..."); 
progressDialog.show(); 



// After task is done. 

progressDialog.dismiss(); 

をしかし、動作するようには思えません。これにいくつかの洞察を投げてください。

注:ネットワークコールから取得した結果をソートしてリストを作成することが自分の仕事であると想定できますが、この操作が完了するまではUIを空白にしないでください。だから私はユーザーに進捗ダイアログを表示したい。

+1

同時に表示して非表示にする時間ですか?それは...ですか? –

+0

はい、どちらも目的が異なるためです。 安全に私がソートしていると仮定することができます。ソートには時間がかかりすぎます。ソート後にリストを作成したいのですが、操作が終了するまでUIを空白にしないでください。 –

+0

異なるProgressDialogを表示するのではなく、既存のタイトルやメッセージを更新しないのはなぜですか? –

答えて

0

同じ進行状況ダイアログを再利用することをお勧めします。私がお勧めするのは、asyncTaskのonProgressUpdate()メソッドを使うことです。このメソッドはメインスレッド上で動作しますので、doInbackgroundからpublishProgress(param)メソッドを呼び出すだけで、このメソッドを使用して進行状況ダイアログを更新できます。例えば。

私が2つのWebサービスを持っているとします.1つはカテゴリの取得用で、もう1つはサブカテゴリの取得用です。だから私はこれをやっているときに私は非同期タスクを1つの進捗ダイアログだけを使用し、私は何度も進捗ダイアログのメッセージを更新することです。

onPreExecute() 
{ 

ProgressDialog progressDialog = new ProgressDialog(context); 
progressDialog.setMessage("Please wait.."); 
progressDialog.show(); 
} 
doInBackground() 
{ 

// call webservice for fetching category 

publishProgress("Loading categories"); 

// parse webservice result 

// call webservice for fetching sub category 

publishProgress("Loading Sub categories"); 

// parse webservice result 

} 
onProgressUpdate(String[] args) 
{ 

progressDialog.setMessage(args[0]); 
} 


onPostExecute() 
{ 
progressDialog.dismiss(); 
} 
関連する問題