завершение действия на OnCancelListener ProgressDialog не работает - PullRequest
1 голос
/ 21 февраля 2012

В своей деятельности я загружаю некоторые данные из веб-службы, во время этого я показываю пользователю ProgressDialog ... Я хочу, чтобы пользователь мог закрыть действие при нажатии клавиши BACK D-Pad.Я сделал это следующим образом:

public class MyActivity implements OnCancelListener {
    /*  ...  */

    public void startDialog() {
        ProgressDialog pd = ProgressDialog.show(
            MyActivity.this,    // Context
            "",                 // title for dialog
            "Loading...",       // message for dialog
            true,               // indeterminate?
            true,               // cancellable?
            this                // onCancelListener()
        );
    }

    @Override
    public void onCancel(DialogInterface dialog) {
        // I want to finish() this activity when dialog is canceled
        finish();
    }
}

Вы видите, что я заканчиваю текущую деятельность в onCancel () методе Dialog's OnCancelListener интерфейса.Но этот метод не вызывается, когда я нажимаю НАЗАД, когда диалоговое окно отображается.Диалог исчезает, но onCancel не вызывается.

Y?

1 Ответ

2 голосов
/ 21 февраля 2012

Возможно, это ограничение Android. Попробуйте это с помощью обработчика

public class MyActivity implements OnCancelListener {
    /*  ...  */

    private Handler mHandler = new Handler(){

        @Owerride
        public void handleMessage(Message message) {
        switch (message.what) {
        case 1:{
            finish();
        } break;
            }
        }
    };

    public void startDialog() {
        ProgressDialog pd = ProgressDialog.show(
            MyActivity.this,    // Context
            "",                 // title for dialog
            "Loading...",       // message for dialog
            true,               // indeterminate?
            true,               // cancellable?
            this                // onCancelListener()
        );
    }

    @Override
    public void onCancel(DialogInterface dialog) {
        mHandler.sendEmptyMessage(1);
    }
}
...