Android 如何在RadioGroup中获取OnCheckedChangeListener

Android 如何在RadioGroup中获取OnCheckedChangeListener,android,Android,RadioGroup为OnCheckedChangeListener提供方法“set()”,但不提供“get()”。但我的模块必须以某种方式获取RadioGroup的CheckedChangeListener,并用我的listener包装它,它为客户提供行为跟踪。如何在不要求库的用户显式地将其作为参数提供的情况下获取OnCheckedChangeListener侦听器 问题示例: 我们可以实现以下方法: void wrapMyRadioGroup(RadioGroup group,OnCheck

RadioGroup为OnCheckedChangeListener提供方法“set()”,但不提供“get()”。但我的模块必须以某种方式获取RadioGroup的CheckedChangeListener,并用我的listener包装它,它为客户提供行为跟踪。如何在不要求库的用户显式地将其作为参数提供的情况下获取OnCheckedChangeListener侦听器

问题示例:

我们可以实现以下方法:

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中现有侦听器的方法,使用我们库的代码将其包装,然后重新设置。否。我需要以前的捕获侦听器,您的代码完全删除了这个侦听器