android 自定义控件 方法冲突
我有一个自定义控件,里面有一个checkbox,一个edittext现在checkbox改变状态时,相应地把edittext改为可写或不可定,但同时让用户能根据check...
我有一个 自定义控件, 里面有一个 checkbox, 一个 edittext
现在 checkbox 改变状态时,相应地把 edittext 改为可写或不可定, 但同时让用户能根据 checkbox 状态改变作其它事情,怎么处理呢?
这是自定义控件里面的内容 (chRateType 是 checkbox, etContent 是 EditText)
ckRateType.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
etContent.setEnabled(isChecked);
}
});
public void addBoxCheckedChangeListener(OnCheckedChangeListener mListener) {
ckRateType.setOnCheckedChangeListener(mListener);
}
用户可以使用 addBoxCheckedChangeListener 来监听状态的更改, 并作出相应的改变。
问题来了
如果用户使用了 addBoxCheckedChangeListener, 就等于调用了 setOnCheckedChangeListener, 那我原本的 setOnCheckedChangeListener, 就无法起作用了。 求解! 展开
现在 checkbox 改变状态时,相应地把 edittext 改为可写或不可定, 但同时让用户能根据 checkbox 状态改变作其它事情,怎么处理呢?
这是自定义控件里面的内容 (chRateType 是 checkbox, etContent 是 EditText)
ckRateType.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
etContent.setEnabled(isChecked);
}
});
public void addBoxCheckedChangeListener(OnCheckedChangeListener mListener) {
ckRateType.setOnCheckedChangeListener(mListener);
}
用户可以使用 addBoxCheckedChangeListener 来监听状态的更改, 并作出相应的改变。
问题来了
如果用户使用了 addBoxCheckedChangeListener, 就等于调用了 setOnCheckedChangeListener, 那我原本的 setOnCheckedChangeListener, 就无法起作用了。 求解! 展开
1个回答
展开全部
private OnCheckedChangeListener listener1,listener2;
protected void onFinishInflate() {
chRateType.setOnCheckedChangeListener(new A());
}
public void setOnCheckedChangeListener(OnCheckedChangeListener listener){
listener1 = listener;
}
public void addBoxCheckedChangeListener(OnCheckedChangeListener listener){
listener2 = listener;
}
class A implements OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(listener1!=null)
listener1.onCheckedChanged(buttonView, isChecked);
if(listener2!=null)
listener2.onCheckedChanged(buttonView, isChecked);
}
}
protected void onFinishInflate() {
chRateType.setOnCheckedChangeListener(new A());
}
public void setOnCheckedChangeListener(OnCheckedChangeListener listener){
listener1 = listener;
}
public void addBoxCheckedChangeListener(OnCheckedChangeListener listener){
listener2 = listener;
}
class A implements OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(listener1!=null)
listener1.onCheckedChanged(buttonView, isChecked);
if(listener2!=null)
listener2.onCheckedChanged(buttonView, isChecked);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询