Java Android Switch setOnCheckedChangeListener方法通过应用DRY原理传递对象 请考虑上面的代码。现在我有了一个开关,这个代码片段已经足够好了。但是,如果我有4个开关,那么重复4次这个代码片段。所以这是重复的。 这里是每个开关的toggl1->msg=“1”;对于toggl2->msg=“2”只需更改每个位置。
如何将object传递给setOnCheckdChangeListener,以便遵守DRY原则 您可以使用Java Android Switch setOnCheckedChangeListener方法通过应用DRY原理传递对象 请考虑上面的代码。现在我有了一个开关,这个代码片段已经足够好了。但是,如果我有4个开关,那么重复4次这个代码片段。所以这是重复的。 这里是每个开关的toggl1->msg=“1”;对于toggl2->msg=“2”只需更改每个位置。,java,android,design-patterns,dry,Java,Android,Design Patterns,Dry,如何将object传递给setOnCheckdChangeListener,以便遵守DRY原则 您可以使用视图的标记并在以后像这样检索它 toggle1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
视图的标记
并在以后像这样检索它
toggle1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
try
{
String msg ="";
if (isChecked) {
// The toggle is enabled
//msg = "Hello " + String.valueOf(!isChecked);
msg = "1";
} else {
// The toggle is disabled
//msg = "Hello " + String.valueOf(!isChecked);
msg = "1";
}
msg += "\n";
outputStream.write(msg.getBytes());
}
catch (IOException ex) { }
catch (NullPointerException ex) { }
}
});
选中更改后传递的
按钮视图
是您切换的开关,它始终是切换变量之一创建一个自定义选中的侦听器:
CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
try {
String msg ="";
if (isChecked) {
// The toggle is enabled
//msg = "Hello " + String.valueOf(!isChecked);
msg = buttonView.getTag().toString()
} else {
// The toggle is disabled
//msg = "Hello " + String.valueOf(!isChecked);
msg = buttonView.getTag().toString()
}
msg += "\n";
outputStream.write(msg.getBytes());
} catch (IOException ex) {
}
catch (NullPointerException ex) {
}
}
};
toggle1.setTag("1");
toggle2.setTag("2");
toggle3.setTag("3");
toggle1.setOnCheckedChangeListener(listener);
toggle2.setOnCheckedChangeListener(listener);
toggle3.setOnCheckedChangeListener(listener);
然后应用:
private class customChecked implements CompoundButton.OnCheckedChangeListener {
String msg;
public customChecked(String mMsg){
this.msg= mMsg;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
myString = msg;
}
}
创建您自己的OnCheckedChangListener(扩展了原来的一个),并使用constructor@Chol如果你分享你的代码,我会从中学习。是的,我试着去创造。但是CompoundButton类需要上下文。});我无法匹配(已更新。忘记删除“)”它可以工作。setTag如何传递数据?我想探索它。Tag是View类的成员。它可以用于各种用途,比如你的解决方案更透明
toggle1.setOnCheckedChangeListener(new customChecked(1));
toggle2.setOnCheckedChangeListener(new customChecked(2));