1

显示我使用的后台进程ProgressDialogBox

我的代码是

add_button.setOnClickListener(new OnClickListener() {


        public void onClick(View viewParam) {


            progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading...");

            new Thread() {

            public void run() {

            try{

            sleep(10000);

            } catch (Exception e) {

            Log.e("tag", e.getMessage());

            }

            progressDialog.dismiss();
            }

            }.start();

它工作正常。但问题是 10000 毫秒的进度显示,我希望它显示,直到我的数据被获取/添加。我的意思是它应该取决于获取/添加时间。

我想喜欢它

public void onClick(View viewParam) {

progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading...");

Fetching data code here

progressDialog.dismiss();
}

但它工作正常,不显示任何进度条。

我该如何使用它。

谢谢。

4

3 回答 3

2

这种进度条的方式是异步的。这可能对你有帮助。

// class for displaying dialog box
class DialogTask extends AsyncTask<Void, Void, String> {

    protected String doInBackground(Void... urls) {
        return null;
    }

    @Override
    protected void onPostExecute(String result) {

        method to execute
        super.onPostExecute(result);
    }
}
于 2011-11-02T07:20:22.067 回答
0

我建议您将AsyncTaskProgressDialogProgressBar一起使用。

  1. 在 onPreExecute() 方法中,显示 ProgressBar 或使其再次可见,如:progressbar.setVisibility(View.VISIBLE);
  2. 在 doInBackground() 方法中,执行后台任务
  3. 在 onPostExecute() 方法中,只需使用progressbar.setVisibility(View.INVISIBLE);
于 2011-11-02T07:18:08.387 回答
0

那么你的代码很好:

public void onClick(View viewParam) {

    progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading...");

    // Fetching data code here
    // ...
    // Data Fetched

    progressDialog.dismiss();
}

这应该可以工作,只要您在同一个线程中获取代码(尽管这可能会导致 ANR。考虑使用AsyncTask)。

编辑:请注意,如果您在单独的线程中获取数据,根据您的逻辑,您将显示您的进度对话框,然后立即关闭它。

于 2011-11-02T07:21:08.597 回答