2012-04-22 5 views
0

ProgressDialog 휠이 회전하는 데 문제가 있습니다. 여기 내 코드입니다 : - 유일한 문제는해서 ProgressDialog에서 애니메이션이 꽤 많이, 회전되지 않는 것이 계획대로Android : 진행 다이얼로그가 회전하지 않습니다

final ProgressDialog dialog = ProgressDialog.show(this, "", "Loading...", true, false); 
Thread thread=new Thread(new Runnable(){ 
    public void run(){ 
    runOnUiThread(new Runnable(){ 
     @Override 
     public void run() { 
      if(dialog.isShowing()) 
       // starts a foreground service, does database stuff, 
       // sets up a spinner with values 
       dialog.dismiss(); 
      } 

     }); 
    } 
}); 

thread.start(); 

다, 내가해서 ProgressDialog를 가져 간다이 물건해서 ProgressDialog는 사라지고, 백그라운드에서 발생 한 번 설정 쓸모 없게 만든다.

내가 뭘 잘못하고 있니?

+0

새 스레드를 다시 시작하는 이유 –

+0

코드로 프로젝트를 테스트 한 결과 나에게 도움이되었습니다. –

+0

Agarwal - 새로운 스레드를 시작하지 않으면 스피너는 UI 스레드에서 실행되고 결코 표시되지 않습니다. – vampireLady

답변

1

코드는 UI 스레드를 차단 뭔가를해야 여기

 // starts a foreground service, does database stuff, 
     // sets up a spinner with values 

를 생략. 그냥 runOnUiThread() 방법 밖에 놓으십시오.

Thread thread=new Thread(new Runnable(){ 
    public void run(){ 
     // starts a foreground service, does database stuff, 
     // sets up a spinner with values 
     runOnUiThread(new Runnable(){ 
      @Override 
      public void run() { 
      if(dialog.isShowing()) 
       dialog.dismiss(); 
      } 

     }); 
    } 
}); 
0

해서 ProgressDialog의 예를 사용하여 핸들러 안드로이드

final ProgressDialog dialog = ProgressDialog.show(this, "Title", 
      "Message", true); 

    final Handler handler = new Handler() { 
     public void handleMessage(Message msg) { 
      dialog.dismiss(); 
     } 
    }; 
    Thread t = new Thread() { 
     public void run() { 
      // write process code here. 

      handler.sendEmptyMessage(0); 
     } 
    }; 
    t.start(); 

수정 문제 : 나는이 : 당신이 내 오류 예를 들어, 잘못된 영역에서 처리 대화 상자를 넣어하므로해서 ProgressDialog는

0

작동하지 않음 두 가지 활동 : MainActivity활성 상태 표시, Show로 새로운 의도 전송 후 MainActivity가 처리 대화 상자를 표시합니다. ingActivity 및 ShowingActivity는 서버에서 일부 데이터를 가져옵니다 (여기에서 차단됩니다). MainActivity에서 ProcessingDialog를 호출하면 내 의도가 ShowingActivity로 이동하고 서버에서 DATA를 가져 오는 작업이 몇 초 동안 기다려야하기 때문에 Ui를 차단하므로 회전하지 않은 것으로 나타납니다. MainActivity 호출에 1/: 그래서 나는 그것을 고정 데이터를받은 후 MainActivity 여전히들이받은 때문에

final Intent working = new Intent(getApplicationContext(), 
        WorkingActivity.class); 
final ProgressDialog ringProgressDialog = ProgressDialog.show(
        MainActivity.this, "Please wait ...", "Connecting ...", 
        true); 
ringProgressDialog.setCancelable(false); 
new Thread(new Runnable() { 
         @Override 
         public void run() { 
          //Menthod need time to load: 
            getDatafromServer(); 
          if (BookListFragment.isLoaded) { 
           ringProgressDialog.dismiss(); 
           startActivity(working); 
           return; 
          } 
}); 

그래서 UI를 차단하지 않습니다. 그리고 ShowingActivity에서이 DATA를 사용합니다 (DATA를 정적 문자열로 설정했기 때문에).

관련 문제