如果getButton和setOnClickListener,则不会自动关闭AlertDialog

时间:2013-07-29 12:10:43

标签: android android-alertdialog onclicklistener

我曾经使用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上的一个错误吗?

2 个答案:

答案 0 :(得分:0)

在使用AlertDialog.BuildersetPositiveButton甚至setNegativeButton进行设置之前,您无法在setNeutralButton课程中获取按钮。 如果该按钮不存在,则返回null。

根据Android文档:

<强> getButton()

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)

答案 1 :(得分:0)

因为View onClickListener与DialogInterface的onClickListener的不同之处在于它从视图中删除了父视图。