Android 如何让dialog不消失,即使是用户按了返回键dialog也不消
2016-06-24 10:41
501 查看
android 如何让dialog不消失,即使是用户按了返回键dialog也不消失
解决的问题:软件提示升级的dialog时候,用户有可能按了返回键,但是现在的需求是用户只能按“确定升级”或者“暂时不升级”这两个按钮才能拿dialog消失,按返回键不能使dialog消失
方案:截取activity的 onkeydown事件,而应该截取dialog的key响应事件,当dialog在前台显示的时候,keylistener首先会派发到dialog里面,在那里面监听就行了。
先申明一个key。
OnKeyListener
keylistener = new DialogInterface.OnKeyListener(){
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0)
{
return true;
}
else
{
return false;
}
}
} ;
在把这个key注册到dialog里面去
当初始化dialog的时候
builder.setTitle(getText(R.string.XXXX))
.setMessage(getText(R.XXXXXX))
.setOnKeyListener(key)
.setPositiveButton(android.R.string.ok, someOKButtonListener)
.setNegativeButton(android.R.string.cancel, null);
解决的问题:软件提示升级的dialog时候,用户有可能按了返回键,但是现在的需求是用户只能按“确定升级”或者“暂时不升级”这两个按钮才能拿dialog消失,按返回键不能使dialog消失
方案:截取activity的 onkeydown事件,而应该截取dialog的key响应事件,当dialog在前台显示的时候,keylistener首先会派发到dialog里面,在那里面监听就行了。
先申明一个key。
OnKeyListener
keylistener = new DialogInterface.OnKeyListener(){
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0)
{
return true;
}
else
{
return false;
}
}
} ;
在把这个key注册到dialog里面去
当初始化dialog的时候
builder.setCanceledOnTouchOutside(false);//点其他区域对话框也不会消失
builder.setTitle(getText(R.string.XXXX))
.setMessage(getText(R.XXXXXX))
.setOnKeyListener(key)
.setPositiveButton(android.R.string.ok, someOKButtonListener)
.setNegativeButton(android.R.string.cancel, null);
相关文章推荐
- Android 5.1 - 状态栏充电标志问题
- android的充电图标显示
- Android Gridview属性
- 安卓支付相关
- android监听全局监听
- Android Settings修改小记
- [Android Tips] 20. Android Studio Tips
- Android反编译知识点
- Android中的Layout_weight(权重)详解
- Android之双击回到顶部
- Android N上一些新特性的介绍
- 欢迎使用CSDN-markdown编辑器
- Android 开发中的消息机制 Handler 机制
- Android快速开发系列 10个常用工具类
- Android应用内加载pdf的方法?
- Android里面的各种广播
- Android 开发中的消息机制 Looper基础
- Android调用相机
- Android 自定义控件——View(学习篇)
- android studio配置指南