Android如何正确获取Switch的值?

sta*_*low 50 model-view-controller android actionlistener

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

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

Kaz*_*ara 84

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
    }
}
Run Code Online (Sandbox Code Playgroud)

提示:isChecked是新的开关值[ truefalse]不是旧的.


dmo*_*mon 60

由于它从CompoundButton(docs)扩展而来,你可以setOnCheckedChangeListener() 用来监听变化; 用于isChecked()获取按钮的当前状态.


Muh*_*man 9

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..
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

我希望这能解决你的问题