web-dev-qa-db-ja.com

Androidスイッチから値を正しく取得するにはどうすればよいですか?

Switch を使用するAndroidアプリケーションを作成しています。
変更をリッスンし、変更時に値を取得しようとしています。
スイッチを使用する場合、2つの質問があります。

  1. action listener使用しますか?
  2. switch値を取得するにはどうすればよいですか?
50
stackoverflow
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]であり、古い値ではありません。

81
Kazekage Gaara

CompoundButtondocs )から拡張されるため、 setOnCheckedChangeListener() を使用して変更をリッスンできます。 isChecked()を使用して、ボタンの現在の状態を取得します。

59
dmon
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..
                    }
                }
            });

これで問題が解決することを願っています

8
Muhammad Numan