Android 如何在RadioGroup中获取OnCheckedChangeListener
RadioGroup为OnCheckedChangeListener提供方法“set()”,但不提供“get()”。但我的模块必须以某种方式获取RadioGroup的CheckedChangeListener,并用我的listener包装它,它为客户提供行为跟踪。如何在不要求库的用户显式地将其作为参数提供的情况下获取OnCheckedChangeListener侦听器 问题示例: 我们可以实现以下方法:Android 如何在RadioGroup中获取OnCheckedChangeListener,android,Android,RadioGroup为OnCheckedChangeListener提供方法“set()”,但不提供“get()”。但我的模块必须以某种方式获取RadioGroup的CheckedChangeListener,并用我的listener包装它,它为客户提供行为跟踪。如何在不要求库的用户显式地将其作为参数提供的情况下获取OnCheckedChangeListener侦听器 问题示例: 我们可以实现以下方法: void wrapMyRadioGroup(RadioGroup group,OnCheck
void wrapMyRadioGroup(RadioGroup group,OnCheckedChangeListener listener){
group.setOnCheckedChangeListener(new SomeCompositeListener(listener));
}
但有些人不能这样:
void wrapMyRadioGroup(RadioGroup group){
group.setOnCheckedChangeListener(new SomeCompositeListener(group.getOnCheckedChangeListener()));
}
正如你们所能看到的,我们需要最后一个
附言
我通过思考找到了解决办法
private void trackRadioGroup(RadioGroup radioGroup){
RadioGroup.OnCheckedChangeListener listener = null;
try {
Field field = radioGroup.getClass().getDeclaredField("mOnCheckedChangeListener");
field.setAccessible(true);
Object value = field.get(radioGroup);
if(value !=null){
listener = (RadioGroup.OnCheckedChangeListener)value;
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
radioGroup.setOnCheckedChangeListener(new SomeCompositeListener(listener));
}
感谢大家的理解和评价…试试这个
RadioGroup radioGroup = (RadioGroup)findViewById(R.id.cancle_booking_radio_group);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
View radioButton = radioGroup.findViewById(checkedId);
int index = radioGroup.indexOfChild(radioButton);
switch (index) {
case 0:
// perform your action here
break;
case 1:
// perform your action here
break;
case 2:
// perform your action here
break;
case 3:
// perform your action here
break;
case 4:
// perform your action here
break;
}
}
});
您是否正在寻找从RadioGroup获取RadioButton Check?发布您尝试的代码。我正在寻找捕获RadioGroup中现有侦听器的方法,使用我们库的代码将其包装,然后重新设置。否。我需要以前的捕获侦听器,您的代码完全删除了这个侦听器