2011-08-24 8 views
0

내 활동에 스레드를 시작하고 즉시 진행 대화 상자를 표시하고 있습니다.이 스레드의 메소드 완료 후 메소드는 m_progressDialog.dismiss(); 메소드를 호출하는 다른 스레드를 호출합니다.업데이트 progressbar with android

잘 작동하지만 이전 막대의 작업 완료에 따라이 막대가 어떻게 채워지는지 진행률 막대를 구현하고 싶습니다. 작업을 완료하는 데 소요되는 시간은 무기한입니다.

이것은 모호한 것처럼 들릴 수 있지만 필 요한 경우 더 자세히 설명 할 준비가되었습니다.

약간의 코드 : 첫 번째 스레드에서

방법은 내가 이런 식

m_progressDialog = new ProgressDialog(this); 
     m_progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     m_progressDialog.setProgress(0); 
     m_progressDialog.setMax(100); 
     m_progressDialog.setMessage("Retrieving data.."); 
     m_progressDialog.show(); 

    Thread background = new Thread(new Runnable() { 

     public void run() { 
      // TODO Auto-generated method stub 

      try {while(m_progressDialog.getProgress()<=100){ 
       Thread.sleep(500);} 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 


     } 
    }); 

    background.start(); 

을 시도한이

... 
runOnUiThread(m_returnRes); 
} 

private Runnable m_returnRes = new Runnable() { 

    public void run() { 
     m_progressDialog.dismiss(); 

처럼 종료하지만 바는 도착하지 않습니다 dismiss() 메서드가 호출 된 후 바로 채워지고 해제됩니다.

답변

3

을 사용해보세요.. 자체적으로 threding을 처리하고 onProgressUpdate 내부에 publishprogress 함수가있어 진행률 막대를 업데이트 할 수있는보기 내용을 변경합니다.

+0

나는 가능한 경우 Asynctask와 C에 대해 살펴볼 것입니다. – TechnocraT

+0

남자들은 질문을했습니다 ... 나는 그것을 편집했고 더 많은 코드 스 니펫을 추가했습니다. – TechnocraT

+0

.dismiss()는 progressdialog를 닫으려고합니다. [.setProgress()] (http://developer.android.com/reference/android/app/ProgressDialog.html#setProgress%28int%29)를 사용해보세요. –