0

我曾经用来AlertDialog.Builder创建一个警报对话框,并设置对话框按钮的onClickListener;但最近当我尝试

AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder
.setTitle("xxx")
.setPositiveButton("xxx", null)
.setView(getLayoutInflater().inflate(R.layout.alert_dlg, null));

alertDlg=builder.create();
alertDlg.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
         //do sth.
    }
}

,alertDlg不会自动关闭,我必须在方法alertDlg.dismiss();之后手动添加。//do sth.onClick

我知道builder.setPositiveButton("xxx", new OnClickListener(){})是一个好方法,但我只想知道上面的代码有什么问题,这是Android上的错误吗?

4

2 回答 2

0

因为 View onClickListener 与 DialogInterface 的 onClickListener 在从视图中移除父视图的方式不同。

于 2013-07-29T12:20:30.763 回答
0

在使用or甚至AlertDialog.Builder设置它之前,您无法在类中获得按钮。如果按钮不存在,它将返回 null。setPositiveButtonsetNegativeButtonsetNeutralButton

根据Android文档:

获取按钮()

Gets one of the buttons used in the dialog.

If a button does not exist in the dialog, null will be returned.

参考: http: //developer.android.com/reference/android/app/AlertDialog.html#getButton(int)

于 2013-07-29T12:18:37.507 回答