Android 安卓:截取回键
因为back键会破坏我的应用程序,所有数据都会丢失,所以我需要截取它来询问用户这是否真的是他想要的 我想到了以下结构:Android 安卓:截取回键,android,android-alertdialog,onkeydown,Android,Android Alertdialog,Onkeydown,因为back键会破坏我的应用程序,所有数据都会丢失,所以我需要截取它来询问用户这是否真的是他想要的 我想到了以下结构: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // a
@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);
}
谢谢,A.alertDialog.show();当用户按下返回按钮时,应在单击“无”按钮的范围内调用对话框 onKeyDown现在已被处理,因此返回true 现在显示您的对话框 当你按下yes时,你想模仿后退按钮,这是什么;做 当您按“否”时,您只需关闭对话框,活动将继续 你会想要这个:
@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)
{
finish(); // or yourContext.finish();
//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)
{
// do nothing dialog will dismiss
}
});
alertDialog.show();
return true; //meaning you've dealt with the keyevent
}
return super.onKeyDown(keyCode, event);
}
删除返回super.onKeyDown(keyCode,event);