2017-07-17 92 views
0

進度對話框旋轉輪在執行實際工作時停止旋轉。我怎樣才能使它不斷旋轉的車輪,當我的其他工作是怎麼回事,而.......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

如果loadFormView是你的「工作」,需要在後臺線程以某種方式(線程發生,意圖服務,異步任務等)。

現在你正在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:動畫師只能在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();