【问题标题】:Android How do I correctly get the value from a Switch?Android 如何正确获取 Switch 的值?
【发布时间】:2012-05-21 12:32:54
【问题描述】:

我正在创建一个使用SwitchAndroid 应用程序。
我正在尝试侦听更改并在更改时获取值。
我在使用开关时有两个问题:

  1. 我用什么action listener
  2. 如何获得switch 值?

【问题讨论】:

  • 我认为他的意思要么是ToggleButton,要么是Checkbox,但switch-statement这个标签让我很困惑,因为他可能出于某种原因指的是switch(int v){}
  • @JoxTraex 不,我在 api 4.0 中有一个 Switch
  • @stackoverflow 我认为这是最好的答案并显示接受作为答案stackoverflow.com/a/49600494/8079868

标签: android model-view-controller actionlistener


【解决方案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】:

    由于它是从CompoundButtondocs)扩展而来的,你可以使用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)
                              }
                          }
                      })
          

          【讨论】:

            猜你喜欢
            • 2017-07-14
            • 1970-01-01
            • 1970-01-01
            • 2011-02-08
            • 1970-01-01
            • 2016-07-07
            • 2014-12-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多