Question

Dans mon activité, je charge des données à partir d'un service Web, pendant ce temps, je montre un ProgressDialog à l'utilisateur ... je veux que l'utilisateur puisse fermer l'activité en appuyant sur la touche BACK D-Pad. Je l'ai fait comme suit:

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

Vous pouvez voir que je termine l'activité en cours dans la méthode onCancel () de l'interface OnCancelListener de Dialog.Mais cette méthode n'est pas appelée lorsque j'appuie sur RETOUR pendant que la boîte de dialogue est visible.La boîte de dialogue disparaît mais onCancel n'est pas appelé.

Oui?

Était-ce utile?

La solution

C'est peut-être une restriction Android.Essayez-le en utilisant le gestionnaire

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);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top