Кнопка "Назад" и последняя активность

Мои приложения используют некоторые действия.

если вы нажмете кнопку "Назад", вы вернетесь через старые действия, после чего вы внезапно покинете приложение!

поэтому мне нужно показать сообщение типа "вы действительно хотите выйти", если это последнее действие в стеке

Я знаю, как переопределить кнопку "Назад", но я не могу понять, как узнать, сколько активности в истории

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // Is it the last activity on stack ? 
        // so show confirm dialog
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

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

Ответ 1

вы можете добиться этого, используя функцию finish()

public void finish() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("do you really want to exit?");
        builder.setCancelable(false);
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                quit();
            }
        });
        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();
    }

    public void quit() {
        super.finish();
    };

Ответ 2

Вам не нужно знать, сколько операций в истории. Вы можете сделать этот путь. Выполните метод onBackPressed(), когда нажата кнопка "Назад". Затем переопределите метод finish() в вашем основном действии, чтобы отобразить диалоговое окно подтверждения.Потому что метод onBackPressed() вызывает метод завершения операции(). При обращении к основному действию вызывается метод overriding finish(), будет отображаться диалог, который вы переопределили.