这里的问题:当我点击确定按钮,也就是 AlertDialog 里的 PositiveButton 的时候,我们需要判断用户是输入是否符合我们的预期,如果不符合通常提示用户重写输入,且不关闭当前的对话框,但上图中点击按钮后会自动的关闭窗口。
先看原来的这个是怎么写的:
private void openDialog() { LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.layout.change_password_dialog, null); final EditText originPasswordEt = (EditText) linearLayout.findViewById(R.id.origin_password); TextView forgetPassword = (TextView) linearLayout.findViewById(R.id.forget_password); final AlertDialog dialog = new AlertDialog.Builder(getContext()) .setView(linearLayout) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String originPassword = originPasswordEt.getText().toString().trim(); //传到后台 } }) .create(); dialog.show(); }
虽然图片里和代码的并不是同一个,但问题是一样的
在 setPositiveButton 方法中,即使我们没有调用 dialog.dismiss()
但对话框还是会自动的关闭,就算我们在 onClick 里判断输入的内容,错误的提示也会在窗口关闭后才出现。
在 AlertDialog 提供的 API 中我也没有找到可以设置的地方,如果有还请告知。而我解决这个问题的办法:
final AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setTitle(msg) .setView(layout) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setPositiveButton("submit",null) .setCancelable(true) .create(); dialog.show(); //为了避免点击 positive 按钮后直接关闭 dialog,把点击事件拿出来设置 dialog.getButton(AlertDialog.BUTTON_POSITIVE) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Pattern pattern = Pattern.compile("[0-9]*"); Matcher matcher = pattern.matcher(editText.getText()); if (!matcher.matches()){ showToast("请输入正确的 ID"); break; } dialog.dismiss(); } } });
setPositiveButton("submit",null) 监听事件传入 null
在调用 dialog.show() 后再设置 Button 的点击事件,否则 getButton() 会返回空
这样在我们手动调用 dialog.dismiss() 之前,对话框是不会关闭的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Android实现点击AlertDialog上按钮时不关闭对话框的方法,包括了Android实现点击AlertDialog上按钮时不关闭对话框的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现点击AlertDialog上按钮时不关闭对话框的方法。分享给大家供大家参考。具体如下: 开发过程中,有时候会有这样的需求: 点击某个按钮之后显示一个对话框,对话框上
我有一个JFrame调用一个新的JDialog,这个JDialog有一个关闭它的按钮。 当JDialog关闭时,JFrame应该重新绘制。但是当我用按钮关闭JDialog时,什么也不会发生,当我用经典的“X”按钮关闭时,就不会发生这种情况。 这是来自JFrame的windowListener: 这里是JDialog中关闭JDialog的按钮的代码: 就像我说的,监听器中的JFrame需要在JDia
问题内容: 我有一个EditText用于输入的对话框。当我单击对话框上的“是”按钮时,它将验证输入,然后关闭对话框。但是,如果输入错误,我希望保留在同一对话框中。每次无论输入什么,当我单击“否”按钮时,都应自动关闭对话框。如何禁用此功能?顺便说一句,我在对话框上的按钮上使用了PositiveButton和NegativeButton。 问题答案: 编辑:这仅在API 8+上有效,如某些注释所述。
如何让我的动作监听器单击按钮并将按钮文本显示到文本区域? 在actionlistener之后初始化,因此当我尝试定义
问题内容: 我正在开发可访问性应用程序。当用户想要离开该应用程序时,我会显示一个对话框,在该对话框中他必须确认要离开,如果5秒钟后他仍未确认,则该对话框应自动关闭(因为用户可能意外打开了该对话框)。这类似于在Windows上更改屏幕分辨率时发生的情况(会出现警报,如果您没有确认,它将恢复为以前的配置)。 这是我显示对话框的方式: 显示对话框后5秒钟如何关闭对话框? 问题答案:
继承自Popup 对话框是一个原生对话弹出框,显示一个消息与最多三个按钮。关闭时会被自动释放。 使用“const {AlertDialog} = require('tabris');”引入该类。 属性 buttons Type: {ok?: string, cancel?: string, neutral?: string} 含有按钮文本内容的对象。分别是这三种按钮:ok, cancel和neut
我可以创建一个没有消极或积极按钮的对话框。这在特定行动后会摧毁它自己吗?
我有一个按钮(CustomDilaog活动),当点击显示自定义对话框和密码编辑文本,确定按钮和取消按钮时,如果你输入正确的密码,它会打开另一个活动(文本活动),直到现在一切正常, 我有两个部分的问题。 第一部分:当我在(文本活动)并按后退按钮返回(CustomDilaog活动)时,仍然对话框显示在它上面,如何让它关闭 第二部分:对话框启动后,如果我不写密码,只需单击“确定”按钮,edittext为