我正在尝试将switchbutton
包装在函数中并返回基于开关的值是checked
/unchecked
,但由于 java 设计限制,我必须将字符串声明为 final,我不希望返回值是 final,因为它会根据选择而变化,
下面是我的代码
protected String getSwitchValue(Switch sw){
String ReturnValue; // Issue in accessing the variable in inner class
sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
//String ReturnValue;
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
ReturnValue = "Yes"; // throws error here
}else {
ReturnValue = "No"; // throws error here
}
}
});
return ReturnValue;
}
你是对的,你不能这样做。您可以在没有如下所示setOnCheckedChangeListener()
的情况下完成此操作。
protected String getSwitchValue(Switch sw) {
if (sw.isChecked()) {
return "YES";
} else {
return "NO";
}
}
您的"getSwitchValue"方法似乎想要获取当前的开关按钮状态?如果是这样,你想使用"Switch.isChecked(("而不是侦听器。
OnCheckedChangeListener 是当您想要在更改开关按钮的检查状态时触发某些事件处理时所需要的。不是当您想要获取当前状态时。