2011-12-20 4 views
0

내 응용 프로그램에서 아래 코드를 사용하고 있습니다.버튼 클릭시 진행 상태 대화 상자 표시

Button button = new Button(this); 
    button.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        ProgressDialog pd = new ProgressDialog(v.getContext()); 
        pd.setTitle("Please wait......."); 
        pd.show(); 
        // some task which will take minimum 2 or 3 seconds 
        // e.g. parsing XML file 
        pd.dismiss(); 
       } 
      }); 

위의 코드에 따르면 버튼을 클릭하면 진행률 대화 상자가 화면에 표시되지만 표시되지 않습니다. 왜 내가 모르는거야.

그러나 내가 그 단추를 풀어 놓은 후에도 pd.dismiss() 표시를 제거하면.

내가 그 표시되지 진전이 대화, 또한 나의 작업의 장소에 어떤 무한 루프를 넣어합니다.

내 코드가 맞습니까? 아무도 내 요구 사항에 대한 해결책을 알고 있다면이 게시물에 회신 해주십시오.

감사합니다.

+0

당신은 진행 [대화 상자] (http://developer.android.com/guide/topics/ui/dialogs.html#ProgressDialog)에 대한 android dev 가이드를 읽으셨습니까? 또한이 페이지의 오른쪽을 보면 정확한 문제와 관련하여 많은 의문점이 있습니다. – Vladimir

+0

나는 모든 것을 보았다. 모두 스레드와 진행 대화 상자에 대해 이야기하고있다. 모두 스레드에서 Progress Dialog로 코드를 게시했습니다. 아무도 AsyncTask없이 시도한 경우 해결책을 얻기 위해 여기에 게시했습니다. 코멘트 주셔서 감사합니다. –

+0

가능한 복제본 [어떻게 표시하고 안드로이드 진행 대화 상자를 제거합니까] (http://stackoverflow.com/questions/4388142/how-do-i-show-and-then-remove-an-android-progress- 대화 상자) –

답변

1

단지 inBackground() 메소드에 코드를 작성하고 onUpdateProgress를 (사용하여 진행률을 표시하기위한 AsychTask 클래스를 사용)와 onPostExecute()을 기각 여기

이 예제는 링크

http://developer.android.com/reference/android/os/AsyncTask.html

http://www.vogella.de/articles/AndroidPerformance/article.html

+0

작은 의심, AsyncTask없이 가능합니까? –

+0

당신의 경우 가능하지만 진행 대화 상자가 표시되고 그것이 닫히기 전에 화면에 표시되므로 작업이 잘 수행 될 수 있지만 진행 시간 대화 상자가 나타나지 않아서 무슨 일이 발생합니까? – Pratik

+0

내 질문에 ** 언급했습니다 나는 dismiss()를 호출하기 전에 무한 루프를 두었다. ** 화면에 진행 대화 상자가 없다. 좋아, 나는 AsyncTask로 시도 할 것이다. 아무튼 댓글과 답변을 주셔서 감사합니다. –

1

비동기 태스크는 이러한 목적으로 설계되었습니다. 버튼을 클릭 할 때 asyncTask를 시작하고 asyncTask의 preExecute에서 대화 상자를 표시하고 asyncTask의 PostExecute()에서 대화 상자를 닫습니다. background() 메서드에서 시간이 걸리는 활동을 수행하십시오.

+0

yashwanth 동의 ... – Richa