【问题标题】:Android AlertDialog does not close with radiobuttonAndroid AlertDialog 不使用单选按钮关闭
【发布时间】:2019-07-02 02:02:35
【问题描述】:

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

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();
}

【问题讨论】:

    标签: android radio-button android-alertdialog


    【解决方案1】:

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

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

    使用dialog.show() 而不是builder.show()

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

    【讨论】:

    • 所以窗口没有出现!
    • 好的。有用。谢谢!
    猜你喜欢
    • 2013-04-21
    • 2011-08-14
    • 2011-03-02
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多