Android如何正确获取Switch的值?

时间:2012-05-14 00:29:29

标签: android model-view-controller actionlistener

我正在创建一个使用SwitchAndroid应用程序 我正在努力倾听变化,并在改变时获得价值 使用开关时我有两个问题:

  1. 我使用的是什么action listener
  2. 如何获取switch值?

5 个答案:

答案 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是新的切换值[truefalse],而不是旧切换值。

答案 1 :(得分:57)

由于它从CompoundButtondocs)延伸,您可以使用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)

科特林,但采用更具可读性的Java风格

   videoLoopSwitch.setOnCheckedChangeListener(object : CompoundButton.OnCheckedChangeListener{
                override fun onCheckedChanged(switch: CompoundButton?, isChecked: Boolean) {
                    videoPlayer?.apply {
                        setLooping(isChecked)
                    }
                }
            })