Android 如何解决dialog弹出时无法捕捉Activity的back事件
来源:互联网 发布:java应用前景 编辑:程序博客网 时间:2024/04/29 02:56
在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件:
1)重写onKeyDown或者onKeyUp方法
2)重写onBackPressed方法
3)重写dispatchKeyEvent方法
这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料。
然而在有dialog弹出时,想捕捉back键的事件的话,上述三种办法都无法实现。因为上述方法是重写在activity里面的,也就是说当activity是当前焦点时,它可以捕捉到相应的back键事件,而有dialog弹出时,dialog获取了当前焦点,所以activity里面的方法无法获取到back键事件,此时有两种思路:
1)设置dialog的setOnCancelListener监听:
selectDialog.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub // Toast.makeText(getBaseContext(), "点击了back", Toast.LENGTH_SHORT).show(); } });
这样就可以捕捉到back键的事件了,当按下back键时,系统默认的操作会让dialog cancel掉,此时会触发OnCancelListener,然后在onCancel方法里面就可以实现自己想要实现的操作了。
2)设置dialog的setOnKeyListener并重写dispatchKeyEvent方法
selectDialog.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0) { dialog.dismiss(); } return false; } }); public boolean dispatchKeyEvent(KeyEvent event) { switch(event.getKeyCode()) { case KeyEvent.KEYCODE_BACK: Toast.makeText(getBaseContext(), "点击了back", Toast.LENGTH_SHORT).show(); break; default: break; } return super.dispatchKeyEvent(event); }
然后在dispatchKeyEvent里面就可以实现自己想要实现的操作了。
转载http://www.cnblogs.com/dolphin0520/p/3414128.html
0 0
- Android 如何解决dialog弹出时无法捕捉Activity的back事件
- Android 如何解决dialog弹出时无法捕捉Activity的back事件
- [转]Android 如何解决dialog弹出时无法捕捉Activity的back事件
- Android 如何解决dialog弹出时无法捕捉Activity的back事件
- Android 如何解决dialog弹出时无法捕捉Activity的back事件
- Android 如何解决dialog弹出时无法捕捉Activity的back事件
- Android解决dialog弹出时捕捉不到Activity的back事件
- android dialog在activity中,如何处理activity捕捉不到back点击事件
- Android 中 弹出 Dialog 后监听 Back键 点击事件
- 如何改变Android Dialog弹出后的Activity背景亮度
- Android自定义dialog中的EditText无法弹出键盘的解决
- Android自定义dialog中的EditText无法弹出键盘的解决
- Android自定义dialog中的EditText无法弹出键盘的解决
- Android 解决dialog无法弹出输入键盘
- Android点击返回键back时弹出对话框Dialog
- Android点击返回键back时弹出对话框Dialog
- 一次activity弹出dialog 的按键事件记
- 如何使Android dialog弹出后当前的 activity背景不变暗
- Linux多命令顺序执行
- 把一个正整数转化为用一个4位定长的36进制字符串
- 开通CSDN账号上传第一个JAVA程序:冒泡排序
- 为新服务器配置linux环境及常用工具
- C#中导出数据到Excel
- Android 如何解决dialog弹出时无法捕捉Activity的back事件
- UVA - 537 Artificial Intelligence?
- 《离散数学》与《信息检索》第二周作业发布推迟到本周六,Sorry
- Effective JavaScript Item 24 使用一个变量来保存arguments的引用
- Linux管道符
- PAT 修理牧场(25)(Huffman问题,优先队列priority_queue)(与poj 3253 一模一样的思路)
- spring框架基础
- C++中数据内存分布探索笔记
- UVa:621 - Secret Research