dialog弹出,点击back按键无法返回问题解决

今天阅读队友代码,调试代码中,发现对话框弹出点击back按键无法返回问题解决。

代码如下:

/**
     * 单个按钮没有标题的弹框
     *
     * @param context
     * @param content内容
     * @param btnString按钮名称
     * @param dia按钮事件
     *            ,没有传null
     */
    public static void showDialogConfirm(Context context, String content, String btnString, final dialogOnClick dia) {
        final AlertDialog dialog = new AlertDialog.Builder(context).create();
        dialog.setCanceledOnTouchOutside(false);
        // dialog.setCancelable(false);
        dialog.show();
        Window window = dialog.getWindow();
        window.setContentView(layout.dialog_account_passed);
        TextView txt_content = (TextView) window.findViewById(R.id.msg);
        txt_content.setText(content);
        Button btn_ok = (Button) window.findViewById(R.id.btn_confirm);
        btn_ok.setText(btnString);
        btn_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (dia != null) {
                    dia.showDialogOnClick();
                }
                dialog.dismiss();
            }

        });
    }

其中代码

dialog.setCancelable(false);

如果点击back无法dismiss dialog,正确的姿势是:

 dialog.setCanceledOnTouchOutside(false);

这样就能保证dialog在点击back可以dismiss对话框。

时间: 2024-10-19 20:26:28

dialog弹出,点击back按键无法返回问题解决的相关文章

android dialog弹出的情况下监听返回键

view = LayoutInflater.from(getActivity()).inflate( R.layout.dialog_tips, null); title2 = (TextView) view.findViewById(R.id.title2); dialog = new Dialog(getActivity()); dialog.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(Dialo

dialog弹出框 点击周围空白处弹出层不自动消失

dialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失 dialog弹出框 点击周围空白处弹出层不自动消失

Android自定义控件:可复用的Dialog弹出框

最近帮工作室改一个项目,需求是制作许多单选.多选的Dialog弹出框,我感觉有许多代码都是可重用的,就写了个可重用的Dialog类,废话不多说,先看图: 由于一些和谐的原因,实际效果肯定是比这个好看的,这里基本上都是原生属性修改--简单讲一下设计思路吧: 为什么选择自定义DIalog子类而不是AlertDialog子类(或者其他)? Dialog子类是诸如AlertDialog子类等的父类,其可自定义范围更广(因为被设计的子类属性.方法等更少,同时又具备必要的属性和方法),其次就是,有些子类的设

转载:Android 如何解决dialog弹出时无法捕捉Activity的back事件

在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法 这三种办法有什么区别在这里不进行阐述,有兴趣的朋友可以查阅相关资料. 然而在有dialog弹出时,想捕捉back键的事件的话,上述三种办法都无法实现.因为上述方法是重写在activity里面的,也就是说当activity是当前焦点时

jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭的bug解决方案

jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭的bug解决方案 2014年8月30日 3233次浏览 相信很多前端朋友都用过jqueryeasyUI,jqueryeasyUI功能很强大,可以实现我们前端很多想要的效果,例如,下拉树也就是select tree等.但是jqueryeasyUI底层构建不是很好,简单的应用还可以,深入开发的话,还是推荐用extjs相对好一些! 今天的这篇文章,主要是解决我很久很久之前遇到的一个问题,今天重新在博客上发一遍,就是jqueryea

解决jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭的bug

使用panel的onMove事件解决了panel,dialog以及window组件在被拖动时,会超出浏览器边界而无法拖回的情况. 当窗口被拖出浏览器有边界时,$(document).width();会增大,增大的部分就是窗口超过浏览器窗口的部分,所以right > browserWidth条件永远无法满足. 如果我们在思考得多一点,其实对于panel,dialog,window三个组件,我们往往要求的并不是它不能超出浏览器界限,而是要求它不能超出父元素界限,而且当父元素的overflow不是hi

android service Dialog 弹出框

android service Dialog 弹出框 相信大家第一次在Service中实现 AlertDialog 弹出框时,都会遇到应用闪退然后报出这个异常: Caused by: android.view.WindowManager$BadTokenException: 下面说下为什么出现这个异常,原因很简单,是由于 AlertDialog 的显示是依赖于一个确定的Activity类,所以要想在 Service 中实现弹出来,需要做如下配置: 1.安装常规写好 AlertDialog 功能块

jQuery Dialog弹出层对话框插件

Dialog.js的相关注释已经添加,可以按照注释,进行相关样式的修改,适用于自定义的各个系统! dialog.js 1 /** 2 * jQuery的Dialog插件. 3 * 4 * @param object content 5 * @param object options 选项. 6 * @return 7 */ 8 function Dialog(content, options) 9 { 10 var defaults = { // 默认值. 11 title:'标题', // 标

Android开发实战之底部Dialog弹出效果

在Android开发中,有很多情况下我们需要使用到对话框,遗憾的是,安卓自带的对话框样式不能满足我们实际的需要,所以往往需要我们自定义对话框,具体做法:写一个对话框继承自Dialog实现他的一个构造方法(取决于你的用法),在OnCreate()中进行处理.当然更多情况下,你是不需要自己去写的,会抄代码一样也是一种本事,这里我介绍一种底部弹出的对话框,希望对你的学习和工作有所帮助,下面是效果图: 下面介绍具体做法: 导入依赖库: dependencies { compile 'com.github