AlertDialog如何实现点击按钮不关闭对话框
通过按键控件设置自身的点击响应 在前面提到,使用setNagtiveButton()、setNeutralButton()和setPositiveButton()方法设置按键控件的单击响应时,会关闭AlertDialog对话框。而直接通过按键控件设置自身的点击响应则不会关闭AlertDialog对话框。 1.1 设置按键显示内容 首先通过上述三个方法只设置按键显示的内容,而不设置其响应例程。 builder.setPositiveButton("返回上一层", null); 其中,builder是AlertDialog.Builer类的对象,setPositiveButton()方法的第一个参数为按键显示的内容,第二个参数为点击响应例程。 1.2 设置按键点击响应例程 接下来获取AlertDialog类对话框中Positive Button(右键)控件,然后通过该控件设置其点击响应例程。 dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); 其中,dialog是AlertDialog类的对象,可以通过AlertDialog.Builder类的对象获取。通过AlertDialog类的对象调用getButton()方法获取指定的Button,该方法的参数是指定Button的ID,而AlertDialog.BUTTON_POSITIVE是右键控件的ID。在获取了Button之后,调用Button类的setOnClickListener()方法设置按键的点击响应例程。 通过该方法设置的点击响应例程,点击按键之后,不会关闭AlertDialog对话框。 1.3 关闭对话框 如果需要关闭AlertDialog对话框,可通过调用dismiss()方法实现。 dialog.dismiss(); 1.4 Example AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setNeutralButton(RUtil.getString(this, R.string.clear), null); AlertDialog dialog = builder.create(); dialog.show(); dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> { //... }); 1.5 References https://blog.csdn.net/hou09tian/article/details/78290314