ProgressDialog не будет отображаться, даже в onPreExecute AsyncTask - PullRequest
1 голос
/ 16 февраля 2011

В моем классе, Main расширяет активность, у меня есть это:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case ...
    case CREDENTIAL_VIEW:
        new SetStatusProgressBar(this).execute();

И есть этот вложенный класс:

private class SetStatusProgressBar extends AsyncTask<String, Void, Boolean> {
    private ProgressDialog dialog;
    private Main ctx;

    public SetStatusProgressBar(Main ctx) {
        this.ctx = ctx;
        dialog = new ProgressDialog(ctx);
    }

    // progress dialog to show user that contacting server.
    protected void onPreExecute() {
        this.dialog = ProgressDialog.show(ctx, null,
                "Refreshing data from server...", true, false);
    }

    @Override
    protected void onPostExecute(final Boolean success) {
        //...
        //statements that refresh UI
        //...

        if (dialog.isShowing()) {
            dialog.dismiss();
            timerProgressBarStop();
        }
    }

    protected Boolean doInBackground(final String... args) {
        //...
        //statements to download data from server
        //...
        return true;
    }

}

В Главном классе я открываю второе Занятие, таким образом:

Intent myIntent = new Intent(Main.this, Credentials.class);
startActivityForResult(myIntent, CREDENTIAL_VIEW);

Эта вторая активность возвращается к основной деятельности следующим образом:

Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();

Я не понимаю, почему при переходе от второго занятия к основному, ProgressDialog будет показывать ТОЛЬКО ПОСЛЕ того, как обновляется пользовательский интерфейс ... Таким образом, диалог прогресса остается на экране только в течение половины секунды ... а потом прячется! :( Я бы хотел видеть ProgressDialog наверху в течение всего времени загрузки!

Помогите, пожалуйста. Спасибо всем

1 Ответ

0 голосов
/ 16 февраля 2011

Хорошо, прежде всего используйте getApplicationContext () вместо переменной ctx.Использование «это» не для граждан памяти.Попробуйте обновить progressDialog в методе onProgressUpdate (...).

...