转于:

http://bbs.9ria.com/thread-204406-1-1.html

-------------------------------------------------------------------------------------

android 如何让dialog不消失,即使是用户按了返回键dialog也不消失
解决的问题:软件提示升级的dialog时候,用户有可能按了返回键,但是现在的需求是用户只能按“确定升级”或者“暂时不升级”这两个按钮才能拿dialog消失,按返回键不能使dialog消失
方案:截取activity的 onkeydown事件,而应该截取dialog的key响应事件,当dialog在前台显示的时候,keylistener首先会派发到dialog里面,在那里面监听就行了。

先申明一个keylistener。

  1. OnKeyListener keylistener = new DialogInterface.OnKeyListener(){
  2. public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
  3. if (keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0)
  4. {
  5. return true;
  6. }
  7. else
  8. {
  9. return false;
  10. }
  11. }
  12. } ;
复制代码
在把这个listener注册到dialog里面去 当初始化dialog的时候

  1. builder.setTitle(getText(R.string.XXXX))
  2. .setMessage(getText(R.XXXXXX))
  3. .setOnKeyListener(key).setCancelable(false)
  4. .setPositiveButton(android.R.string.ok, someOKButtonListener)
  5. .setNegativeButton(android.R.string.cancel, null);
复制代码

PS: setCancelable(false),作用是当dialog弹出来的时候,如果触点在dialog外围,按照默认的方式 dialog将消失。如果这个设为false的话 这种情况dialog就不会消失了。加了这一句就OK了。dialog.setCancelable(false);

更多相关文章

  1. android中实现截屏的三种思路
  2. PopupWindow 动画显示与消失(逐惭缩放、逐惭透明)
  3. 818
  4. Android(安卓)避免Activity转场动画退出时候和系统自带的一起出
  5. Android(安卓)Studio如何直接安装release包?
  6. android Sqlite多线程访问异常解决方案
  7. Call的作用
  8. android中任何禁止软键盘自动弹出而点击EditText的时候才弹出
  9. android 内存使用

随机推荐

  1. activity contex and memery leak
  2. How to re-sign an existing android sys
  3. Android多媒体学习二:检索Android的图片库
  4. [Android] 开发资料收集:干货
  5. Android Binder机制----实现自定义的系统
  6. 学习unity android sdk 基本
  7. 系出名门Android(5) – 控件(View)之Text
  8. android对话框的使用(下)
  9. 日期匹配星座,月日匹配星座,android 星座
  10. Android Browser学习八 书签历史模块: 历