Android: конкретный RadioButton принадлежит к какой RadioGroup?

Можно ли определить, к какой радиогруппе относится конкретная радиокнопка в Android?

Eg:

RadioGroup_A
     - RadioButton_1A
     - RadioButton_2A

RadioGroup_B
     - RadioButton_1B
     - RadioButton_2B

Когда у меня есть RadioButton_1A, определить, что он принадлежит RadioGroup_A?

Мне нужно реализовать логику, чтобы игнорировать запуск прослушивателя CheckedChange для особого случая. Нужно ограничить это только для одной RadioGroup. Когда я знаю, что RadioButton принадлежит этой конкретной RadioGroup.

Спасибо


person JibW    schedule 19.08.2016    source источник
comment
Пожалуйста, объясните больше, чтобы мы могли понять, чего вы хотите достичь. Если RadioButton_1A имеет уникальный идентификатор, то ясно, что он всегда будет принадлежать RadioGroup_A. (не понял вашу проблему)   -  person Ramit    schedule 19.08.2016
comment
Привет, Рамит. Да, все RadioGroups и RadioButtons имеют идентификаторы (например: android:id=@+id/RadioGroup_A / android:id=@+id/RadioButton_1A)   -  person JibW    schedule 19.08.2016
comment
Итак, если у вас есть уникальный идентификатор, вы хотите идентифицировать группу радио на основе переключателя, где-то может быть проверено изменение при нажатии переключателя. Таким образом, вы можете напрямую использовать RadioGroup_A для RadioButton_1A и RadioButton_2A. Пытаюсь объяснить на известной мне информации. В противном случае укажите, где именно вы хотите выполнить такое действие, предпочтительнее пример кода.   -  person Ramit    schedule 19.08.2016


Ответы (3)


Как насчет метода radioGroup.indexOfChild? Документ говорит, что возвращает:

положительное целое число, представляющее позицию представления в группе, или -1, если представление не существует в группе

Может быть, вы можете проверить, выходит ли ваш RadioButton в RadioGroup:

int idx = radioGroup.indexOfChild(radioButton);

if (idx != -1)
{
   //radioButton is in the radioGroup
}
else {
   //radioButton isnt in the radioGroup
}

Надеюсь, поможет!

person jos    schedule 19.08.2016

В одном из моих приложений я сделал это, имея два RadioButon ArrayList, по одному для каждой группы. В onCreate() после раздувания макета RadioButtons добавляются в каждую группу, как описано в этом ответе.

Затем, проверив, для какого ArrayList содержится RadioButton, можно реализовать требуемую логику.

person Mohan Noone    schedule 19.08.2016

я описал полный пример вашего вопроса, пожалуйста, примените мое решение

public class MyClass extends Activity implements RadioGroup.OnCheckedChangeListener
{
    RadioGroup rg1,rg2,rg3;
    public void onCreate(Bundle b)
    {
        super.onCreate(b);
        setContentView(R.layout.main);


        rg1=(RadioGroup)findViewById(R.id.rg1);
        rg2=(RadioGroup)findViewById(R.id.rg2);
        rg3=(RadioGroup)findViewById(R.id.rg3);


        rg1.setOnCheckedChangeListener(this);
        rg2.setOnCheckedChangeListener(this);
        rg3.setOnCheckedChangeListener(this);

    }

    @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {

        if(radioGroup==rg1)
        {
            //First RadioGroup Clicked
            RadioButton radio=(RadioButton)findViewById(i);
            Toast.makeText(this,radio.getText().toString(),Toast.LENGTH_SHORT).show();
        }

        if(radioGroup==rg2)
        {
            //Second RadioGroup Clicked
            RadioButton radio=(RadioButton)findViewById(i);
            Toast.makeText(this,radio.getText().toString(),Toast.LENGTH_SHORT).show();
        }

        if(radioGroup==rg3)
        {
            //Third RadioGroup Clicked
            RadioButton radio=(RadioButton)findViewById(i);
            Toast.makeText(this,radio.getText().toString(),Toast.LENGTH_SHORT).show();
        }
        }
}
person Riyaz Parasara    schedule 19.08.2016