2017-06-02 36 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

它没有工作:( –