Android:拦截返回键

Android:拦截返回键,第1张

概述由于后退键会破坏我的应用程序,并且所有数据都将丢失,因此我需要拦截它以询问用户是否确实是他想要的.我想到了以下结构:@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){if(keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCou

由于后退键会破坏我的应用程序,并且所有数据都将丢失,因此我需要拦截它以询问用户是否确实是他想要的.

我想到了以下结构:

@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:拦截返回键所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1070825.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存