2017-07-17 7 views
0

進行中のダイアログスピンホイールは、実際の作業中に回転を停止します。どのように私は、スレッド(loadFormViewは何とかバックグラウンドスレッドで発生する必要がありますあなたの「作品」であれば、それは継続的に私の他の仕事が.......Android ProgressDialogが回転しない

progressdialog.setMessage("Please wait. . ."); 
    progressdialog.setCancelable(false); 
    progressdialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    progressdialog.show(); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        loadFormView(m_table, m_rLayout, m_param); 

       } 
      }); 
      progressdialog.dismiss(); 
     } 

    }, 100); 

答えて

1

に起こっているときながらホイールを回転させることができます、インテントサービス、非同期タスクなど)。

今はUIスレッドでその「仕事」を実行しています。これは進行スピンアニメーションをブロックします。

0

これはあなたのために働くかもしれません。この方法をやってみてください。

progressdialog.setMessage("Please wait. . ."); 
progressdialog.setCancelable(false); 
progressdialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
progressdialog.show(); 
final Handler h = new Handler.postDelayed(new Runnable() { 
    public void handleMessage(Message message) { 
     progressdialog.dismiss(); 
     } 
    }; 
Thread checkUpdate = new Thread() { 
    public void run() { 
    // YOUR WORK 
      h.sendEmptyMessage(0); 
     } 
    }, 1000); 
checkUpdate.start(); 
+0

卿、私は次のエラーが発生しています。 android.util.AndroidRuntimeException:AnimatorはLooperスレッドでのみ実行できます... – Susanta

+0

@Susanta。 'Handler'と' postDelayed() 'を使ってみましょう。更新された回答を確認してください。 –

1

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

ここで(コードがテストされますが、これらの線に沿って何かされていません)あなたのケースで非同期タスクを使用する方法の例です:

private class LoadTask extends AsyncTask<Void, Void, Void> { 

protected void onPreExecute(){ 
    progressdialog.show(); 
} 

protected void doInBackground(Void params) { 
    loadFormView(m_table, m_rLayout, m_param); 
    return void; 
} 

protected void onPostExecute(Void result) { 
    progressdialog.dismiss(); 
} 

} 

//start the task 
new LoadTask().execute(); 
関連する問題