Android AlertDialog 没有用单选按钮关闭

Android AlertDialog does not close with radiobutton

我有一个带有单选按钮的 AlertDialog。当我单击一个选项时,它会将值插入到文本视图中,但我无法在之后关闭 window。

private void showRadioButtonDialog() {
    LayoutInflater inflater =(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View vewInflater = inflater.inflate(R.layout.dialog_installments_radiogroup,  null);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    final AlertDialog dialog = builder.create();
    builder.setView(vewInflater);
    builder.setTitle("Dialog title");
    RadioGroup currencySettingRadioGroup = vewInflater.findViewById(R.id.radio_group);
    ArrayList<String> listArr = getInstallmentsList(amountToPay, 12);
    for ( String items: listArr ) {
        RadioButton rb = new RadioButton(this);
        rb.setText(items);
        currencySettingRadioGroup.addView(rb);
        rb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                rb.setChecked(true);
                TextView tvInstallments = findViewById(R.id.tvInstallments);
                tvInstallments.setText(items);
                dialog.dismiss(); // <== does not work
            }
        });

    }
    builder.show();
}

show() 方法在内部调用 create()

您可以通过调用 builder.create() 获得对内置对话框的引用,但是当您调用 builder.show() 时 Android 也会这样做。这意味着 Android 有自己的 Dialog 实例,您的 dialog 变量没有引用它。

使用 dialog.show() 代替 builder.show()

您还需要builder.create()在您设置完Builder的所有属性后调用(将其移至builder.setTitle()下方)。