динамический выбор радиокнопки внутри активности

Я работаю над приложением, в котором моя активность имеет 2 переключателя.

  • 4 канала

  • 9 канал

В настоящее время:

  1. по умолчанию выбор экрана находится на 4-канальной радиокнопке.

  2. если пользователь хочет нажать кнопку (9channel), откроется диалоговое окно, предлагающее пользователю

"если вы переместите, все сохраненные элементы будут удалены"

  1. В диалоговом окне у меня есть кнопки «Да» и «Нет». Если вы нажмете кнопку «Да», будет выбран переключатель 9 каналов.

Проблемы, которые я хочу исправить:

  1. когда пользователь нажимает кнопку «Нет» в диалоговом окне, я выхожу из диалогового окна. Но выбор радиокнопки по-прежнему перемещается на радиокнопку (9 каналов). Как сохранить старый выбор, если пользователь нажмет «Нет» в диалоговом окне?

  2. Выбор по умолчанию для активности включен (4 канала) переключателем. Если пользователь нажимает ту же выбранную кнопку, я не хочу, чтобы диалоговое окно открывалось. Диалоговое окно должно открываться, только если я нажму на другой переключатель.

Как я могу достичь вышеуказанных 2 сценариев? Я не знаю, как получить представление radionbutton и показать пользователю.

мой код:

rg = (RadioGroup) findViewById(R.id.radioGroup1);
public void addListenerOnButton() 
       {

        OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(View v) {
               RadioButton rb = (RadioButton) v;
               selection = (String) rb.getText();

                   mFlag = true;
                   showDialog(SELECTION_ALERT_ID);

        }
    };

    RadioButton rb1 = (RadioButton) findViewById(R.id.radioButton1);
    rb1.setOnClickListener(listener);
    RadioButton rb2 = (RadioButton) findViewById(R.id.radioButton2);
    rb2.setOnClickListener(listener);
} 

person Sunil    schedule 05.05.2015    source источник


Ответы (2)


Сделайте код для опции «Отрицательный» в своем коде:

new AlertDialog.Builder(this)
                    .setTitle("Hello!")
                    .setMessage("Choose your RadioButton:")
                    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) { 
                            rb1.setChecked(true);
                            rb2.setChecked(false);                                
                        }
                    })
                    .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            rb1.setChecked(false);
                            rb2.setChecked(true);
                        }
                    })
                    .setIcon(android.R.drawable.ic_dialog_alert)
                    .show();
person Siloé Bezerra Bispo    schedule 05.05.2015

для 1, в прослушивателе диалоговых кнопок выполните:

сначала переместите переключатель в глобальную переменную и добавьте следующий слушатель во всплывающее диалоговое окно.

затем обновите прослушиватель для отрицательной кнопки:

.setNegativeButton(getString(R.string.alert_dialog_negative_text),
      new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
             //not checked, but according to api, should be this method
            rb1.setSelected(true);
        }
 });

для 2 вы можете выполнить проверку в своем коде прослушивателя, и если установлен флажок на нажатой радиокнопке, не показывать диалог.

Но лично я бы рекомендовал использовать OnCheckedChangeListener для переключателя, обратитесь к этому вопросу: слушатель радиокнопок

person Surely    schedule 05.05.2015