2017-06-02 16 views
-2

我試圖顯示ProgressDialog在我的Activity,而我正在執行任務AsyncTask。在這裏我的代碼如下。Android:ProgressDialog不顯示與AsyncTask

我的問題是onPreExecute()被稱爲(我檢查了打印),但我的progressDialog沒有顯示,而我的功能sendRequestdoInBackground(..)執行。我不明白它發生了什麼,我不知道如何解決這個問題。我GOOGLE了它,但我沒有找到任何合適的解決方案。如果你有任何想法,對我來說會很好。

private static Activity activity; 
private static ProgressDialog dialog; 

public MyClass(Activity activity){ 
    this.activity = activity; 
} 
public static String sendRequest(String request){ 
//do something 
} 


@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    dialog = ProgressDialog.show(activity, 
      "ProgressDialog", 
      "Wait!"); 

} 

@Override 
protected String doInBackground(String... params) { 
    String result = sendRequest(params[0]); 
    return result; 
} 

@Override 
protected void onPostExecute(final String result) { 
    dialog.dismiss(); 
} 
+0

你如何使用'MyClass'更換活動? 'sendRequest()'方法中也沒有任何東西。進度對話框正在顯示,但可能在一秒之內。在'sendRequest'方法中執行一些操作。 – Piyush

+0

sendRequest中有東西。我正在遠程服務器上執行http請求。我也在我的活動中使用MyClass來執行它。 –

回答

0

嘗試:

progressDialog = new ProgressDialog(context); 
progressDialog.setTitle("title"); 
progressDialog.setMessage("message"); 
progrsesDialog.show(); 
+0

它沒有工作:( –

0

試試這個

private class AsyncTaskRunner extends AsyncTask<String, String, String> { 

    ProgressDialog progressDialog; 

    @Override 
    protected void onPreExecute() { 
     progressDialog = ProgressDialog.show(CardPaymentActivity.this, 
       "Progress", "please wait..."); 
    } 

    @Override 
    protected String doInBackground(String... params) { 

     publishProgress("sleep time..."); // Calls onProgressUpdate() 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     progressDialog.dismiss(); 
    } 

    @Override 
    protected void onProgressUpdate(String... text) { 

    } 
} 

,並呼籲AsyncTaskRunner類的活動課這樣

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_card_payment); 

    AsyncTaskRunner myTask = new AsyncTaskRunner(); 
       myTask.execute(); 

} 
+0

它沒有工作:( –

0

試試這個

只是通過標題和消息,並與你的Activity參考

public void showProgressDialog(final String title ,final String message){ 
     if (activity != null){ 
      activity.runOnUiThread(new Runnable(){ 
       public void run(){ 
        progressDialog = ProgressDialog.show(activity, title, message); 
       } 
      }); 
     } 
    } 
+0

它沒有工作:( –