Android 如何正确获取 Switch 的值?
Posted
技术标签:
【中文标题】Android 如何正确获取 Switch 的值?【英文标题】:Android How do I correctly get the value from a Switch? 【发布时间】:2012-05-21 12:32:54 【问题描述】:我正在创建一个使用Switch 的android
应用程序。
我正在尝试侦听更改并在更改时获取值。
我在使用开关时有两个问题:
-
我用什么
action listener
?
如何获得switch
值?
【问题讨论】:
我认为他的意思要么是ToggleButton
,要么是Checkbox
,但switch-statement
这个标签让我很困惑,因为他可能出于某种原因指的是switch(int v)
@JoxTraex 不,我在 api 4.0 中有一个 Switch
@*** 我认为这是最好的答案并显示接受作为答案***.com/a/49600494/8079868
【参考方案1】:
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
] 而不是旧的。
【讨论】:
【参考方案2】:由于它是从CompoundButton
(docs)扩展而来的,你可以使用setOnCheckedChangeListener()
来监听变化;使用isChecked()
获取按钮的当前状态。
【讨论】:
【参考方案3】: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..
);
希望能解决你的问题
【讨论】:
【参考方案4】:我在 kotlin 中添加了这个
switchImage.setOnCheckedChangeListener compoundButton: CompoundButton, b: Boolean ->
if (b) // Do something
else // Do something
【讨论】:
【参考方案5】:Kotlin 但更具可读性的 Java 风格
videoLoopSwitch.setOnCheckedChangeListener(object : CompoundButton.OnCheckedChangeListener
override fun onCheckedChanged(switch: CompoundButton?, isChecked: Boolean)
videoPlayer?.apply
setLooping(isChecked)
)
【讨论】:
以上是关于Android 如何正确获取 Switch 的值?的主要内容,如果未能解决你的问题,请参考以下文章
ng-switch-when 来自 ng-repeat 的值不显示值