如何让AlertDialog 在点击确定不消失

有时候我们会在AlertDialog 里面进行一些逻辑判断,当单击“确定“按钮时完成某些工作,如果这些工作失败,对话框不能关闭。而当成功完成工作后,则关闭对话框。但是系统默认是每次点击确定按钮或者取消按钮,dialog都会消失。原因分析的话这篇文章分析的非常好,我就不再累赘:http://blog.csdn.net/jdsjlzx/article/details/25288749,它里面也提供了些解决办法,比如利用反射或者自定义handler,但是感觉有点烦,于是我在stackoverflow上找到了一个更好的方法:

 final AlertDialog mDialog=new AlertDialog.Builder(this).setPositiveButton("确定", null).setNegativeButton("取消", null).create();
    mDialog.setOnShowListener(new DialogInterface.OnShowListener() {
        @Override
        public void onShow(DialogInterface dialog) {
            Button positionButton=mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
            Button negativeButton=mDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
            positionButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this,"确定",Toast.LENGTH_SHORT).show();
                    mDialog.dismiss();
                }
            });
            negativeButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_SHORT).show();

                }
            });
        }
    });

    mDialog.show();

嗯,这样子就可以自己控制dialog的显示和消失了,so easy。以上代码实现的是点击确定,dialog消失,点击取消,dialog不消失。
转自https://blog.csdn.net/wanglaohushiwo/article/details/54316616

你可能感兴趣的:(如何让AlertDialog 在点击确定不消失)