2011-04-13 1 views
0

나는 진행 대화 기능을 정의 할 때와 같은, 인터넷에서 데이터를 가져 오는 동안 ProgressDialog.show()와 ProgressDialog.hide() 문제의 usege는

public static void showLoadingBar(Context context) 
{ 
    dialog=new ProgressDialog(context); 
    dialog.setMessage("Please wait"); 
    dialog.show(); 
} 
public static void hideLoadingBar() 
{ 
    dialog.dismiss(); 

} 

나는 다음과 같이 사용 싶어 :

UiManager.getInstance().showLoadingBar(this); 
    FetchData(); 
    UiManager.getInstance().hideLoadingBar(); 

그러나 나는 UiManager.getInstance(). hideInfo() 주석을 달기 전까지는 결코 LoadingBar를 표시 할 수 없었습니다. hideLoadingBar(); 이러한 라인은

항상 화면에 ProgressBar가 표시됩니다. 어쨌든이 문제를 해결할 수 있습니까?

답변

1

FetchData()은 비동기 작업으로 보입니다. 따라서 실제 작업이 완료되기 전에 함수는 로딩 바를 반환하고 숨 깁니다. AsyncTask을 사용하는 것이 좋습니다. AsyncTask를 실행하는 동안

onPreExecute()show()를 호출하고 onPostExecute()hide()를 호출 할 수 진행률 대화 상자를 표시합니다. 전화 FetchData()doInBackground()에서 호출하십시오. AsyncTask가 백그라운드 메서드를 수행하기 전에 ProgressDialog가 시작되고 완료되면 ProgressDialog가 중지됩니다.

+0

초입니다. @Muratcan 비동기 작업 인 경우'FetchData()'가 반환 할 때 진행률 막대를 숨겨야합니다. – Varun

관련 문제