Android AlertDialog не закрывается радиокнопкой - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть 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();
}

1 Ответ

0 голосов
/ 07 февраля 2019

Метод show() внутренне вызывает create().

Вы получаете ссылку на встроенный диалог, вызывая builder.create(), но Android тоже делает это, когда вы вызываете builder.show().Это означает, что у Android есть свой собственный экземпляр Dialog, на который ваша переменная dialog не ссылается.

Используйте dialog.show() вместо builder.show().

Вам также нужно builder.create(), чтобывызывается после того, как вы закончите установку всех свойств Строителя (переместите его так, чтобы оно было ниже builder.setTitle()).

...