如何写出正确的系统返回键监听
2016-01-29 10:43
281 查看
首先说下系统默认的返回键:
当你没有复写返回键的时候,你按系统返回键的过程是这样的,
按下–抬起–响应返回键,这就是系统默认的。
网上很多帖子都是这么写的:
通过实验你会发现这段代码的实际过程是这样的:
按下–响应返回键。所以这样写是不正确的,在有些情况下会引发奇怪的问题。
下面是正确的写法:
差别很小,但这样才是正确的写法。
顺便说一下另外一个项目中的小问题,就是做网络请求时候的加载框,这个加载框默认是点击周边不可取消但是点击返回键可以取消的,我们项目中通常正确的使用方法是点击周边不可取消而点击返回键取消加载框的同时也退出当前activity页面。这就需要我们给加载框添加一个返回键监听,下面就是正确给加载框添加返回键监听的代码:
当你没有复写返回键的时候,你按系统返回键的过程是这样的,
按下–抬起–响应返回键,这就是系统默认的。
网上很多帖子都是这么写的:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //TODO return true; } return false; }
通过实验你会发现这段代码的实际过程是这样的:
按下–响应返回键。所以这样写是不正确的,在有些情况下会引发奇怪的问题。
下面是正确的写法:
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { backChecked(); return true; } return false; }
差别很小,但这样才是正确的写法。
顺便说一下另外一个项目中的小问题,就是做网络请求时候的加载框,这个加载框默认是点击周边不可取消但是点击返回键可以取消的,我们项目中通常正确的使用方法是点击周边不可取消而点击返回键取消加载框的同时也退出当前activity页面。这就需要我们给加载框添加一个返回键监听,下面就是正确给加载框添加返回键监听的代码:
private void initListenner() { loadingDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { //当加载框正在加载过程中点击返回键,取消加载框并退出当前activity @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP && event.getRepeatCount() == 0) { LogUtils.i("initListenner--setOnKeyListener"); dialog.dismiss(); onBackPressed(); } return true; } }); }
相关文章推荐
- onkeyup,onkeydown和onkeypress的区别介绍
- JavaScript onkeydown事件入门实例(键盘某个按键被按下)
- 双击Back退出应用 android中弹出吐司
- Android开发监听返回键返回上个网页或者fragment
- Java键盘事件监听
- 关于cocos2dx里面的onKeyDown返回按钮的问题
- KeyEventDemo
- android 硬件上的back键处理
- 关于ViewPager 无法捕获onKeyDown 的解决方法
- android 返回键监听
- android onKeyDown返回true与false区别
- 自定义View监听onKeyDown事件,View捕获焦点
- Android系统onKeyDown事件
- Android 实现点击两次BACK键退出应用
- 详细解析JavaFX的键盘事件KeyEvent - Pressd/Released/Typed
- Android TabActivity中onKeyDown无法响应的解决方法
- MFC OnChar、OnKeyDown、OnKeyUp和PreTranslateMessage的关系
- JS限制用户只能输入数字
- Android TouchEvent 的传递顺序
- 点击两次退出应用程序