当前位置: 代码迷 >> Android >> android 怎么让dialog不消失,即使是用户按了返回键dialog也不消
  详细解决方案

android 怎么让dialog不消失,即使是用户按了返回键dialog也不消

热度:29   发布时间:2016-04-28 03:42:21.0
android 如何让dialog不消失,即使是用户按了返回键dialog也不消

转于:

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);
  相关解决方案