Android:一个特定的RadioButton属于哪个RadioGroup?

时间:2016-08-19 10:29:25

标签: android android-radiogroup android-radiobutton

是否有可能确定Android中特定单选按钮属于哪个无线电组?

例如:

RadioGroup_A
     - RadioButton_1A
     - RadioButton_2A

RadioGroup_B
     - RadioButton_1B
     - RadioButton_2B

当我有RadioButton_1A时,要认定属于RadioGroup_A?

我需要实现一个逻辑来忽略为特殊情况触发CheckedChange监听器。当我知道RadioButton属于那个特定的RadioGroup时,需要仅限制一个RadioGroup。

谢谢

3 个答案:

答案 0 :(得分:1)

radioGroup.indexOfChild方法怎么样?该文件说回报:

  

表示组中视图位置的正整数,   如果视图不存在于组

中,则返回-1

也许您可以检查RadioButton中的RadioGroup是否已退出:

int idx = radioGroup.indexOfChild(radioButton);

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

希望它有所帮助!

答案 1 :(得分:1)

在我的一个应用程序中,我通过拥有两个RadioButon ArrayLists来实现这一点,每个组一个。在布局膨胀后的onCreate()中,RadioButtons将按照this answer中的描述添加到每个组中。

然后,通过检查哪个ArrayList包含RadioButton,可以实现所需的逻辑。

答案 2 :(得分:1)

我描述了您的问题的完整示例,请申请我的解决方案

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