Как использовать ProgressDialog, чтобы показать фоновый прогресс в Android - PullRequest
1 голос
/ 02 ноября 2011

чтобы показать фоновый процесс, который я использовал 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();

Работает нормально.Но проблема в том, что progess показывает в течение 10000 мс, где, как я хочу, чтобы он показывался, пока мои данные не были извлечены / добавлены.я имею в виду, что это должно зависеть от времени выборки / добавления.

Я думал, что будет так же

public void onClick(View viewParam) {

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

Fetching data code here

progressDialog.dismiss();
}

Но это не работает, не показывает никакого индикатора выполнения.

Как я могу использовать это.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

Этот способ выполнения индикатора является асинхронным.Это может быть полезно для вас.

// 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);
    }
}
0 голосов
/ 02 ноября 2011

Что ж, с вашим кодом все в порядке:

public void onClick(View viewParam) {

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

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

    progressDialog.dismiss();
}

Это должно работать, пока вы выбираете код в том же потоке (хотя это может привести к ANR. Рассмотрите возможность использования AsyncTask).

РЕДАКТИРОВАТЬ: обратите внимание, что если вы выбираете данные в отдельном потоке, в соответствии с вашей логикой вы покажете диалоговое окно прогресса, а затем сразу же закроете его.

0 голосов
/ 02 ноября 2011

Я бы предложил вам использовать AsyncTask с ProgressDialog или ProgressBar .

  1. В методе onPreExecute () отобразите ProgressBar или снова сделайте его видимым, например: progressbar.setVisibility(View.VISIBLE);
  2. В методе doInBackground () выполните фоновое задание
  3. В методе onPostExecute () просто скрыть ProgressBar, используя progressbar.setVisibility(View.INVISIBLE);
...