开关按钮重置无法正常工作

qrt*_*tLs 5 android android-layout

在UI视图中,切换按钮没有进入OFF状态,我也设置了一个onCheckedChangeListener.它保持开启也变成灰色.这在使用API​​15的模拟器上发生,但不会出现在我的真实设备上的API19上.是代码还是模拟器?
最后一个sr.setChecked(false)只让按钮变为灰色但不将其设置为OFF.
重现行为的最小示例:class var:

Switch sr;
Switch srs;
Run Code Online (Sandbox Code Playgroud)

onCreate包括:

    sr = (Switch) findViewById(R.id.switch_ros);
    srs = (Switch) findViewById(R.id.switch_ros_stream);
    sr.setOnCheckedChangeListener(this);
    srs.setOnCheckedChangeListener(this);
Run Code Online (Sandbox Code Playgroud)

onCheckedChanged包括:

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    buttonView.setChecked(false);
}
Run Code Online (Sandbox Code Playgroud)

编辑:我尝试了Nexus_5_API_19而不是Nexus_4_API_19,它运行正常.似乎是Android-Bug.模拟器的图像

Mat*_*ter 2

将这两个人放在班级的前列

private Switch sr;
private Switch srs;
Run Code Online (Sandbox Code Playgroud)

然后在onCreate()中

@Override
protected void onCreate( Bundle savedInstanceCreate )
{
    [...]// other onCreate() stuff
    sr = (Switch) findViewById(R.id.switch_ros);
    srs = (Switch) findViewById(R.id.switch_ros_stream);
    sr.setOnCheckedChangeListener(this);
    srs.setOnCheckedChangeListener(this);
}
Run Code Online (Sandbox Code Playgroud)

然后OnCheckedChangeListener()

@Override
public void onCheckedChanged( CompoundButton buttonView, boolean isChecked )
{
    switch(buttonView.getId())
    {
        case R.id.switch_ros:
            //boolean wifi_state = isConnected(isChecked);
            sr.setChecked(isChecked);
            break;
        case R.id.switch_ros_stream:
            [...]// other switch function
            srs.setChecked(isChecked);
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑 1 onCheckedChangeListener 找不到您尝试打开/关闭的开关按钮。这是因为您在该方法中放入了多个开关按钮。您将需要使用 switch case 或 if else 语句来区分您要切换的按钮。