Ошибка добавления переключателя в группу переключателей - Removeview ()

rd1 = (RadioButton) findViewById(R.id.rd1);
rd2 = (RadioButton) findViewById(R.id.rd2);
rd3 = (RadioButton) findViewById(R.id.rd3);
rd4 = (RadioButton) findViewById(R.id.rd4);

RadioGroup rg = new RadioGroup(this);
rg.addView(rd1);
rg.addView(rd2);
rg.addView(rd3);
rg.addView(rd4);
rd1.setChecked(true);

Ошибка: сначала вы должны вызвать removeview() для родителя дочернего элемента... Кто-нибудь, помогите мне...


person K9_HCM ng Ngc Trung    schedule 22.02.2017    source источник
comment
Если в вашем макете определены RadioButton, почему бы просто не поместить их в RadioGroup? То есть, почему вы пытаетесь сделать это в коде?   -  person Mike M.    schedule 22.02.2017
comment
Потому что каждая радиокнопка находится в другой строке таблицы. Это такая викторина. Можете ли вы помочь мне с решением ..   -  person K9_HCM ng Ngc Trung    schedule 22.02.2017
comment
Посмотрите здесь идеи: stackoverflow.com/questions/10461005/   -  person Mike M.    schedule 22.02.2017


Ответы (1)


Проблема в том, что ваши представления создаются в XML (поэтому вы должны использовать findViewById)

Это означает, что они уже присоединены к родительскому узлу в дереве XML, где вы их определили.

У вас есть два варианта:

Правильный способ - определить RadioGroup в XML, либо с радио внутри, либо затем программно создать и добавить радио

или плохой (быстрый, но хакерский) способ:

rd1 = (RadioButton) findViewById(R.id.rd1);
...

((ViewGroup) rd1.getParent()).removeView(rd1);
...

RadioGroup rg = new RadioGroup(this);
rg.addView(rd1);
...
rd1.setChecked(true);
person Nick Cardoso    schedule 22.02.2017
comment
Проблема в том, что мои переключатели находятся в разных TableRow. У меня есть какое-нибудь решение.? :( - person K9_HCM ng Ngc Trung; 22.02.2017