访问开关按钮的内部类变量

时间:2018-08-11 04:20:14

标签: android switch-statement

我试图在函数中包装switchbutton并根据开关返回的值是checked / unchecked,但是由于Java设计的限制,我必须声明字符串最后,我不希望返回值是最终值,因为它会根据选择而改变

下面是我的代码

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;
} 

2 个答案:

答案 0 :(得分:0)

您是对的,您不能以这种方式这样做。无需像下面这样的setOnCheckedChangeListener(),就可以实现这一目标。

protected String getSwitchValue(Switch sw) {
    if (sw.isChecked()) {
        return "YES";
    } else {
        return "NO";
    }
}

答案 1 :(得分:0)

您的“ getSwitchValue”方法似乎要获取当前开关按钮状态?如果是这样,则要使用“ Switch.isChecked()”代替侦听器。

OnCheckedChangeListener是您想要在更改开关按钮的选中状态时触发一些事件处理的需求。不是当您想获取当前状态时。