
由于后退键会破坏我的应用程序,并且所有数据都将丢失,因此我需要拦截它以询问用户是否确实是他想要的.
我想到了以下结构:
@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); }谢谢.
解决方法:
当用户按下时,将出现对话框.
现在已经处理了onKeyDown,因此您返回true.
您的对话框现在显示,
当您按“是”时,您想模仿“后退”按钮,即finish();确实
当您按no时,您只是关闭对话框而活动继续
您会想要这样的:
@OverrIDepublic 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);} 总结 以上是内存溢出为你收集整理的Android:拦截返回键全部内容,希望文章能够帮你解决Android:拦截返回键所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)