Android 如果getButton和setOnClickListener

Android 如果getButton和setOnClickListener,android,android-alertdialog,onclicklistener,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)); a

我曾经使用
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.disease()onClick
中,在
//做某事之后手动执行code>


我知道
builder.setPositiveButton(“xxx”,newonClickListener(){})
是个好方法,但我只想知道上面的代码有什么问题,这是Android上的一个bug吗?

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

根据Android文档:

getButton()

获取对话框中使用的按钮之一。

如果对话框中不存在按钮,则返回null。


参考:

因为视图onClickListener与DialogInterface的onClickListener不同,它从视图中删除父视图。

你说得对,它是不同的。但事实并非如此。否则,他永远无法正确重写onClick()方法。编译错误肯定会发生。我使用了
builder.setPositiveButton(“xxx”,null)
来设置正按钮,因为我在帖子中编辑了我的代码。我只想晚一点设置onClickListener如果我的代码返回null,将出现NullPointerException我想稍后设置侦听器的原因是我想在侦听器中处理R.layout.alert\u dlg中的小部件,而布局在builder.create()之前还没有设置,如果
build.show()
直接,如何处理小部件?