2012-04-22 14 views
0

ProgressDialogホイールを回転させるのに問題があります。ここに私のコードは次のとおりです。計画通りAndroid:ProgressDialogが回転しない

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が消える - 唯一の問題は、ProgressDialogでアニメーションがかなり多く、回転していないということです役に立たなくする。

私は間違っていますか?

+0

新しいスレッドをもう一度やり直す理由 –

+0

私は今、あなたのコードを使ってプロジェクトをテストしています。 –

+0

Agarwal - 新しいスレッドを開始しないと、スピナーはUIスレッドで実行され、その後は表示されません。 – vampireLady

答えて

1

あなたがここに

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

を省略したコードは、UIスレッドをブロック何かをしなければなりません。方法の外に置いてください。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

を動作していません2つのアクティビティ:MainActivityアシスタンスを表示すると、MainActivityは、新しいインテントをShowに転送した後に処理ダイアログを表示しますingActivityとShowingActivityはサーバーからいくつかのDATAを取得します(ここでブロックされます)。 MainActivityでProcessingDialogを呼び出すと、IntentがShowingActivityに移動し、サーバーからのDATAを取得するアクションが数秒待たなければならないため、Uiをブロックするため、スピンしていません。 MainActivityコールで 1 /::だから私はそれを固定データが得られた後MainActivityはまだruningているため

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をブロックしません。 そして、私はこのデータを使用します(私はDATAを静的なStringに設定しています)。

関連する問題