Pregunta

En mi actividad, cargo algunos datos de un servicio web, durante esto muestro un progreso dialog al usuario ... Quiero que el usuario pueda cerrar la actividad al presionar la tecla D-PAD. Lo he hecho de la siguiente manera:

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();
    }
}

Puedes ver que estoy terminando la actividad actual en OnCancel () Método de diálogo Oncancellistener interfaz. Pero este método no se llama cuando presiono hacia atrás durante el cuadro de diálogo es visible. El diálogo desaparece pero OnCancel no se llama.

Y?

¿Fue útil?

Solución

Quizás sea la restricción de Android. Pruébalo usando Handler

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);
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top