2016-09-16 2 views
-1

ProgressDialogonPostExecute에 표시하는 방법은 AsyncTask입니다.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) 메소드를 호출하십시오. 예를 들어.

나는 두 개의 웹 서비스를 가지고 있는데 하나는 범주를 가져오고 다른 하나는 하위 범주를 가져 오는 것입니다. 그래서 내가이 일을하는 경우 비동기 작업 하나의 진행률 대화 상자를 사용하고 내가 수행 할 작업은 매번 진행 대화 상자의 메시지를 업데이트하는 것입니다.

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(); 
} 
관련 문제