, так как клавиша возврата уничтожает мое приложение и все данные будут потеряны, мне нужно перехватить его, чтобы спросить пользователя, действительно ли это то, что он хочет.
Я подумал о следующей структуре:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
// ask user if he really wants to exit
// no --> return true;
// yes --> return super.onKeyDown(keyCode, event);
//manually entering either of the return values works fine
}
return super.onKeyDown(keyCode, event);
}
Часть «Спроси пользователя», которую я хотел реализовать с помощью диалогового окна с предупреждением.Моя проблема в том, что теперь отображается диалоговое окно с предупреждением, но метод onKeyDown работает до конца, пока отображается диалоговое окно с предупреждением, и что в диалоговом окне с предупреждением я не знаю, как сказать системе передать правильное возвращаемое значение.
Полный код, который я имел в виду:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Tile");
alertDialog.setMessage("data lost, are you sure?");
alertDialog.setButton(-1, getString(R.string.yes), new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
return;
//I only can return without a boolean value here. }
});
alertDialog.setButton(-2, getString(R.string.no), new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
return;
}
});
alertDialog.show();
}
return super.onKeyDown(keyCode, event);
}
Спасибо, А.