2013-07-31 78 views
0

我發佈這個問題,因爲我不能真正弄清楚是什麼導致,有時,ProgressDialog沒有出現。我看了所有類似的問題,但沒有一個樂於助人的形成我 我有一個輔助類android progressdialog沒有出現

private static ProgressDialog progressDialog; 
public static void ShowProgressDialog(Context context, String title, String message, boolean cancellable) { 
    try { 
     if (progressDialog == null) 
      progressDialog = ProgressDialog.show(context, title, message); 
     else 
      LogHelper.WriteLogInfo("ALERT_DIALOG", "progress dialog already exists"); 
    } catch (Exception e) { 
     LogHelper.WriteLogError("error showing progress dialog", e); 
    } 
} 

這種方法,我用這種方式把它從我的活動

DialogHelper.ShowProgressDialog(this, "title","progress bar text",false); 
new MyAsyncTask().execute("inputString"); 

一切工作非常好吧,但是有時ProgressDialog不會出現,並且沒有應該由catch塊中的LogHelper.WriteLogError寫入的錯誤日誌。

有沒有人有什麼導致這種行爲的想法?

+0

你嘗試執行'DialogHelper.ShowProgressDialog(這一點, 「進度條文字」);'從的AsyncTask? –

+0

這段代碼不會編譯,例如你沒有將正確的參數傳遞給ShowProgressDialog()。請編輯問題以顯示您實際使用代碼的方式。 – laalto

+0

的的AsyncTask全部用於圍繞項目來實現Web服務調用一個獨立的類,並且每一個Web服務操作具有不同的等待消息,所以我每次調用前顯示ProgressDialog,以顯示正確的消息 – user2637324

回答

0

你應該

DialogHelper.ShowProgressDialog(getapplicationcontext(), "progress bar Title" , "Message",false); 
new MyAsyncTask.execute("inputString") 
+0

我已經固定的代碼示例 – user2637324

+0

現在檢查it..get解決方案 –

0
ProgressDialog progress= new ProgressDialog(this); 

progress.setTitle("Your Text"); 

progress.show(); 

MyTask tak=new MyTask(); 

task.execute(); 
+0

你能解釋的區別嗎? – user2637324

+0

如果我們想要在創建活動時加載數據,然後顯示對話框,然後執行您的任務。並在onPost方法中關閉對話框。它始終工作.. –

+0

我沒有在活動創建時顯示ProgressDialog,但在onClickListener中完成創建活動時。我知道它應該總是工作,但我已經與我的眼睛看到的ProgressDialog沒有示 – user2637324

0

注意的AsyncTask有一個方法

@Override 
protected void onPreExecute() 
{ 
    super.onPreExecute(); 
    // Show ProgressDialog if desired 
    if (doUseProgressDialog) 
    { 
     // Note that all these parameters are passed to the containing class in the constructor 
     progressDialog = new ProgressDialog(activity); 
     progressDialog.setMessage(progressDialogMessage); 
     progressDialog.setTitle(progressDialogTitle); 
     progressDialog.setProgressStyle(progressDialogStyle); 
     progressDialog.show(); 
    } 
} 

其允許UI-修飾(例如示出了progressDialog)替換

DialogHelper.ShowProgressDialog(this, "progress bar text"); 
new MyAsyncTask.execute("inputString") 

。此外,你還可以將更新的UI在

protected void onProgressUpdate(Long... progress) 

我建議你繼承的AsyncTask您的需求,並通過必要的標題,郵件等在構造函數中。

+0

我知道AsyncTask在UI線程中運行onPreExecute方法,但是在Activity中使用我的代碼並不是UI線程? – user2637324

+0

的確如此。但是我經歷過Dialogs往往表現不出所料,特別是如果在另一個任務之前構建一行(比如AsyncTask)。但是使用onPreExecute()對我來說效果很好。你應該試試看。 –

+0

好吧,它應該是一個選項,唯一的問題是我應該改變每一個這個AsyncTask的電話,我說的是50/60的電話。如果沒有人會提供更好的解決方案,我會試一試。謝謝 – user2637324