如何获取已选中单选按钮所属的父Radio Group?
获取单选按钮所属RadioGroup的方法
其实很简单,你可以直接通过点击的RadioButton视图获取它的父容器,也就是对应的RadioGroup,具体修改代码如下:
首先在你的onRadioButtonClick方法里,先获取当前选中单选按钮的父RadioGroup:
public void onRadioButtonClick(View view) { boolean checked = ((RadioButton) view).isChecked(); // 获取当前单选按钮所属的RadioGroup,注意类型转换 RadioGroup parentRadioGroup = (RadioGroup) view.getParent(); switch(view.getId()) { case R.id.radio_1: if (checked) populateSpinner(R.array.radio_1_array, parentRadioGroup); break; // 其他单选按钮的case逻辑同理 } }
补充说明
如果你的RadioButton不是直接放在RadioGroup下(比如中间嵌套了其他布局容器),那直接view.getParent()可能拿不到RadioGroup,这时候可以写个小方法遍历父视图直到找到RadioGroup:
private RadioGroup getRadioGroupParent(View view) { View parent = (View) view.getParent(); while (parent != null && !(parent instanceof RadioGroup)) { parent = (View) parent.getParent(); } return (RadioGroup) parent; }
然后在点击事件里调用这个方法:
RadioGroup parentRadioGroup = getRadioGroupParent(view);
当然,如果你的每个RadioGroup都有明确的id,也可以直接通过findViewById(R.id.your_radio_group_id)获取,但前者的方式更通用,不管你有多少个RadioGroup都能自动适配。
内容的提问来源于stack exchange,提问作者Tushar
相关产品推荐
相关产品推荐

