Я попытался переопределить метод onkeydown () вместе с методом onBackPressed () , но диалоговое окно с предупреждением не отображается, а просто возвращается к предыдущему намерению. попробовал несколько примеров, но ни один из них не сработал.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
Log.d("confirm save method","");
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("");
builder.setMessage("Do you want to Save the Game ?");
builder.setCancelable(false);
builder.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
System.exit(0);
}
});
builder.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
Log.d("confirm save method","");
}
2 ответа
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setTitle("Exit Alert")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//finishAffinity();
finish(); //or do anything
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
Попробуйте этот код, а также удалите ваш onKeyDown ();
- Совет 1: если вы переопределите
onBackPressed
, вам не нужно переопределятьonKeyDown(int keyCode, KeyEvent event)
. Это сложно. удалить этот метод (onKeyDown
) может решить эту проблему. Совет 2:
return true
для прерывания этого ключевого события.@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { alertAialog(); return true; } return super.onKeyDown(keyCode, event); } private void alertDialog(){ ... }
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .