我正在创建一个使用Switch的Android
应用程序
我正在努力倾听变化,并在改变时获得价值
使用开关时我有两个问题:
action listener
?switch
值?答案 0 :(得分:78)
Switch s = (Switch) findViewById(R.id.SwitchID);
if (s != null) {
s.setOnCheckedChangeListener(this);
}
/* ... */
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(this, "The Switch is " + (isChecked ? "on" : "off"),
Toast.LENGTH_SHORT).show();
if(isChecked) {
//do stuff when Switch is ON
} else {
//do stuff when Switch if OFF
}
}
提示:isChecked
是新的切换值[true
或false
],而不是旧切换值。
答案 1 :(得分:57)
由于它从CompoundButton
(docs)延伸,您可以使用setOnCheckedChangeListener()
来监听更改;使用isChecked()
获取按钮的当前状态。
答案 2 :(得分:7)
Switch switch = (Switch) findViewById(R.id.Switch2);
switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
...switch on..
} else {
...switch off..
}
}
});
我希望这能解决你的问题
答案 3 :(得分:1)
我在kotlin中添加了它
switchImage.setOnCheckedChangeListener { compoundButton: CompoundButton, b: Boolean ->
if (b) // Do something
else // Do something
}
答案 4 :(得分:0)
videoLoopSwitch.setOnCheckedChangeListener(object : CompoundButton.OnCheckedChangeListener{
override fun onCheckedChanged(switch: CompoundButton?, isChecked: Boolean) {
videoPlayer?.apply {
setLooping(isChecked)
}
}
})