通过按键控件设置自身的点击响应

在前面提到,使用setNagtiveButton()setNeutralButton()setPositiveButton()方法设置按键控件的单击响应时,会关闭AlertDialog对话框。而直接通过按键控件设置自身的点击响应则不会关闭AlertDialog对话框。

1.1 设置按键显示内容

首先通过上述三个方法只设置按键显示的内容,而不设置其响应例程。

builder.setPositiveButton("返回上一层", null);

其中,builderAlertDialog.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
    }
});

其中,dialogAlertDialog类的对象,可以通过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