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 是新的开关值 [truefalse] 而不是旧的。

【讨论】:

【参考方案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 获取输入范围的值

使用jQuery获取Bootstrap Switch的值

ng-switch-when 来自 ng-repeat 的值不显示值

Android 调用手机浏览器的正确方式

Android的Service如何获取Activity传入的值

Android:如何获取 TAG 的值:使用 XmlPullParser