在UI视图中,切换按钮没有进入OFF状态,我也设置了onCheckedChangeListener
。它保持开启也变成灰色。这在使用API15的模拟器上发生,但不会出现在我的真实设备上的API19上。
是代码还是模拟器?
最后sr.setChecked(false)
只允许按钮变为灰色但不将其设置为OFF。
重现行为的最小例子:
class var:
Switch sr;
Switch srs;
onCreate包括:
sr = (Switch) findViewById(R.id.switch_ros);
srs = (Switch) findViewById(R.id.switch_ros_stream);
sr.setOnCheckedChangeListener(this);
srs.setOnCheckedChangeListener(this);
onCheckedChanged包括:
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
buttonView.setChecked(false);
}
修改: 我尝试了Nexus_5_API_19而不是Nexus_4_API_15,它运行正常。似乎是Android-Bug。
答案 0 :(得分:2)
将这两个放在班级的顶部
@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);
}
然后在onCreate()
@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;
}
}
然后OnCheckedChangeListener()
$_SESSION['...']
修改1 onCheckedChangeListener无法找到您尝试打开/关闭的开关按钮。这是因为您在该方法中投入了多个切换按钮。您需要使用switch case或if else语句来区分您希望切换的按钮。