Android:实现点击AlertDialog上按钮时不关闭对话框

开发过程中,有时候会有这样的需求:

点击某个按钮之后显示一个对话框,对话框上面有一个输入框,并且有“确认”和“取消”两个按钮。当用户点击确认按钮时,需要对输入框的内容进行判断。如果内容为空则不关闭对话框,并toast提示。

使用AlertDialog.Builder创建对话框时,可以使用builder.setNegativeButton和builder.setPositiveButton两个方法设置取消按钮和确认按钮的点击事件。然而问题在于,只要用户点击了确认按钮或者取消按钮,系统就会自动将对话框关闭。

解决此问题的方法是:

(1)使用builder.setPositiveButton设置确认按钮的文字,但是不添加监听。即builder.setPositiveButton(R.string.main_ok, null);

(2)得到AlertDialog对象:

AlertDialog alertDialog = builder.create();
alertDialog.show();

(3)获取到对话框上的确认按钮,然后对该按钮添加普通的View.OnClickListener。在用户输入正确的时候,手动调用alertDialog.dismiss()关闭对话框。

alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String cardNum = cardNumET.getText().toString().trim();
                if (cardNum.length() == 0) {
                    Utility.showToast(mActivity, "请输入编号");
                    return;
                }

                //发送
                sendProfile(cardNum);
                alertDialog.dismiss();
            }
        });

问题完美解决。

时间: 2024-08-01 19:40:41

Android:实现点击AlertDialog上按钮时不关闭对话框的相关文章

Android实现点击AlertDialog上按钮时不关闭对话框

开发过程中,有时候会有这样的需求: 点击某个按钮之后显示一个对话框,对话框上面有一个输入框,并且有“确认”和“取消”两个按钮.当用户点击确认按钮时,需要对输入框的内容进行判断.如果内容为空则不关闭对话框,并toast提示. 使用AlertDialog.Builder创建对话框时,可以使用builder.setNegativeButton和builder.setPositiveButton两个方法设置取消按钮和确认按钮的点击事件.然而问题在于,只要用户点击了确认按钮或者取消按钮,系统就会自动将对话

Android点击返回键back时弹出对话框Dialog

public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { ExitDialog(MainActivity.this).show(); return true; } return super.onKeyDown(keyCode, event); } private Dialog ExitDialog

WebView点击加载的页面中的按钮时不弹出新窗口以及在加载后执行javascript

mWebView.setWebViewClient(new WebViewClient() { //点击网页中按钮时,在原页面打开 public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } //页面加载完成后执行 @Override public void onPageFinished(WebView view, String url) { super

Android——点击对话框上button不关闭对话框

有时候我没可能须要在点击button进行一些检測.可是并不想关闭次对话框(系统默认点击不论什么一个button则关闭对话框),处理方法例如以下:在点击事件下加入例如以下代码: try { Field field = dialog.getClass() .getSuperclass().getDeclaredField( "mShowing"); field.setAccessible(true); // 将mShowing变量设为false.表示对话框已关闭 field.set(dia

Android 四大组件之Service(上)

1.Service简介 Service是Android四大组件中最与Activity相似的组件,他们都代表可执行的程序.Service一直运行于后台,不会与用户交互,可用来处理一些耗时的任务(比如:后台播放音乐,I/O操作等).它的创建.配置与Activity基本相似,下面将详细介绍Android Service的开发. 2.创建.配置Service 2.1 定义一个继承Service类的子类 2.2 在AndroidManifest.xml中配置该Service 需要注意的是 Service和

Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框

原文出处:博主宇宙的极客http://www.cnblogs.com/nokiaguy/archive/2010/07/27/1786482.html 众所周知,AlertDialog类用于显示对话框.关于AlertDialog的基本用法在这里就不详细介绍了,网上有很多,读者可以自己搜索.那么本文要介绍的是如何随心所欲地控制AlertDialog.     现在我们来看看第一个需求:如果某个应用需要弹出一个对话框.当单击“确定“按钮时完成某些工作,如果这些工作失败,对话框不能关闭.而当成功完成工

Chrome浏览器点击 input file上传按钮时延迟3-5秒的解决方法

1.  Google chrome 浏览器在52版本之后出现一个bug,就是点击 input file上传按钮时反应很慢,需要等待3-5秒种之后才能弹出选择文件的对话框.比如 windows里可能是这样: MAC里可能是这样:

Android——点击对话框上按钮不关闭对话框

有时候我没可能需要在点击按钮进行一些检测,但是并不想关闭次对话框(系统默认点击任何一个按钮则关闭对话框),处理方法如下:在点击事件下添加如下代码: Java代码   try { Field field = dialog.getClass() .getSuperclass().getDeclaredField( "mShowing"); field.setAccessible(true); // 将mShowing变量设为false,表示对话框已关闭 field.set(dialog, 

Android 类似于ArcMenu(github上开源项目)的自定义多个按钮视图

最近的项目中有个比较好的开源的多个分享按钮的自定义视图,感觉比较好,所以就研究了下,写了下来.其实这个demo类似于github上开源项目ArcMenu开源项目,项目下载地址为:https://github.com/daCapricorn/ArcMenu. 实现效果图: 1.点击该按钮,五个按钮飞入屏幕: 2.点击五个按钮其中的一个后,改按钮放到直至消失,其余的按钮变小直至消失. 体验感还是挺好的. 再次点击五个按钮飞出屏幕. 好了,下面上源码吧.比较多,但都是些自定义的空间,看两遍就能看懂啦.