RadioGroupは、OnCheckedChangeListenerでは "set()"メソッドを提供しますが、 "get()"では提供しません。しかし、私のモジュールは、何らかの方法でRadioGroupのOnCheckedChangeListenerを取得し、それを顧客の動作の追跡を提供するリスナーでラップする必要があります。このOnCheckedChangeListenerリスナを、ライブラリのユーザにパラメータとして明示的に提供することを要求せずに、どのようにして取得できますか?問題のRadioGroupでOnCheckedChangeListenerを取得する方法
サンプル:
我々が実装することができます方法:
void wrapMyRadioGroup(RadioGroup group,OnCheckedChangeListener listener){
group.setOnCheckedChangeListener(new SomeCompositeListener(listener));
}
しかし、このようないくつかのことができません:あなたはguesできるよう
void wrapMyRadioGroup(RadioGroup group){
group.setOnCheckedChangeListener(new SomeCompositeListener(group.getOnCheckedChangeListener()));
}
そして、我々は最後のものを必要とします。
P.S.
私は反射を伴う解決策を見つけました。
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の既存のリスナーをキャプチャし、ライブラリのコードでラップし、再び元に戻すアプローチを探しています。 – Arderun