如何使用ProgressDialog在android中显示后台进度

时间:2011-11-02 07:13:02

标签: android android-progressbar

显示我使用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毫秒的progess显示,因为我希望它显示,直到我的数据被提取/添加。我的意思是它应该取决于获取/增加时间。

我想这样做

public void onClick(View viewParam) {

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

Fetching data code here

progressDialog.dismiss();
}

但它有效,没有显示任何进度条。

我如何使用它。

感谢。

3 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

我建议您将AsyncTaskProgressDialogProgressBar一起使用。

  1. 在onPreExecute()方法中,显示ProgressBar或使其再次可见,如:progressbar.setVisibility(View.VISIBLE);
  2. 在doInBackground()方法中,执行后台任务
  3. 在onPostExecute()方法中,只需使用progressbar.setVisibility(View.INVISIBLE);
  4. 隐藏ProgressBar

答案 2 :(得分:0)

你的代码很好:

public void onClick(View viewParam) {

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

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

    progressDialog.dismiss();
}

只要你在相同的线程中获取代码(这可能会导致ANR。考虑使用AsyncTask),这应该可行。

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