Подтвердите закрытие приложения нажатием кнопки назад

Как сделать так, чтобы нажатие кнопки "назад" не закрывало мое приложение? Я хочу отобразить подтверждающее сообщение.

Спасибо.

4 ответа

Решение

Источник: переопределить кнопку назад, чтобы действовать как домашняя кнопка

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //Display confirmation here, finish() activity.
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Это был очень быстрый поиск, попробуйте немного заглянуть в следующий раз.

Подтверждение закрытия заявки здесь

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Do you want to close?")
               .setCancelable(false)
               .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                        //do finish
                    ImageViewActivity.this.finish();
                   }
               })
               .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       //do nothing
                       return;
                   }
               });
        AlertDialog alert = builder.create();
        alert.show();


    }
    return super.onKeyDown(keyCode, event);
}

Попробуйте это на кнопку назад нажата показывает подтверждение

@Override
public void onBackPressed() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Thank You!!!!!")
           .setCancelable(false)
           .setPositiveButton("OK", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   //do things
               }
           });
    AlertDialog alert = builder.create();
    alert.show();
}   

Не рекомендуется выходить из приложения Android. Дизайн Android не предпочитает выходить из приложения по выбору, а управляет им в операционной системе. Вы можете вызвать приложение Home по соответствующему Намерению:

Вы можете запустить это намерение на onKeyDown() в Android 1.x и выше или onBackPressed() в Android 2.x и выше

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Более простой подход - захватить нажатие кнопки "Назад" и вызвать moveTaskToBack(true) следующим образом:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
Другие вопросы по тегам