сохранить свою активность, когда кнопка назад нажата в Android - PullRequest
1 голос
/ 30 ноября 2011

Я реализую это приложение, где мне нужно приостановить его, когда нажата клавиша «Назад», или показать диалоговое окно, чтобы спросить пользователя, действительно ли он хочет выйти.

Я переопределил клавишу «Назад», чтобы показатьдиалоговое окно с кнопкой 2, «Да» и «Отмена», но в любом случае действие завершается без отображения диалогового окна

, код, который я использую для переопределения клавиши «Назад», следующий:

// Overriding The Back Key To Stop The Music If Running
@Override
public void onBackPressed() {

    super.onBackPressed();
    show_are_you_sure_exit();
}

иФункция выглядит следующим образом:

public void show_are_you_sure_exit() {
    final AlertDialog show_are_you_sure_delete = new AlertDialog.Builder(
            this).create();
    show_are_you_sure_delete
            .setMessage("Are You Sure You Want To Exit?! Your Pregress Won't Be Saved");
    show_are_you_sure_delete.setButton("Yes",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface StopActivityDialog,
                        int which) {
                    start_main_screen_intent();
                    finish();
                }
            });
    show_are_you_sure_delete.setButton2("Cancel",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    return;
                }
            });

    show_are_you_sure_delete.show();

}

с start_main_screen_intent () запускает другое действие

thx для вашей помощи:)

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

вы вызываете super.onBackPressed (), который отправляет событие вверх и убивает то, что вы хотите -

@Override
public void onBackPressed() {
    show_are_you_sure_exit();
}

таким образом, вы обрабатываете событие по-своему, а не как обычно

0 голосов
/ 30 ноября 2011

Не звоните super.onBackPressed();.Единственное, что он делает (если вы расширяете Activity), это вызывает finish().

Однако, обратите внимание, что эта функция выхода не из мира Android.Я бы порекомендовал пересмотреть архитектуру вашего приложения, чтобы избавиться от концепции выхода.

В этом посте вы можете найти подробности о том, почему «выход» плохой:

0 голосов
/ 30 ноября 2011

Попробуйте удалить вызов super.onBackPressed ().В этом случае вам также может понадобиться удалить @Override, иначе Eclipse может кричать на вас.Я думаю, что происходит, когда базовая реализация заканчивает деятельность.

...