web-dev-qa-db-ja.com

onClickListenerをToggleButtonにアタッチします

ToggleButtonがあり、単純なクリックアクションを設定する必要があります。 ToggleButtonの単純なクリックリスナーを実装するにはどうすればよいですか?

詳細が必要な場合はお問い合わせください。

33
nkcmr

ToggleButtonはViewを拡張するため、次のように View.setOnClickListener() を使用するだけです。

// get your ToggleButton
ToggleButton b = (ToggleButton) findViewById(R.id.myButton);

// attach an OnClickListener
b.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // your click actions go here
    }
});
39
Jacob Ras
    this.someToggleButton = (ToggleButton)findViewById(R.id.someToggleButton) ;
    this.someToggleButton.setOnCheckedChangeListener( new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
            doSomethingWith(toggleButton, isChecked) ;
        }
    }) ;
52

View.setOnClickListener()を使用し、ボタンの状態を確認します。

    final ToggleButton tB = (ToggleButton) findViewById(R.id.toggleButton1);
    tB.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if(tB.isChecked()){
                //Button is ON
                            // Do Something 
            }
            else
            //Button is OFF
                            // Do Something     
        }
    });
30
salman khalid

他の回答では強調されていない点を追加するだけです。クリックハンドラーをプログラムでバインドすることは、定型コードでは少し重いです。 ドキュメント で述べたように、次のような特定のシナリオでのみ必要です。

  • ToggleButtonが実行時にインスタンス化される場合
  • クリック動作がフラグメントサブクラスで定義されている場合

ToggleButtonがレイアウトで定義されている場合、そこにハンドラメソッドをバインドする方がはるかに簡単でクリーンです

<ToggleButton 
  Android:id="@+id/togglebutton"
  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
  Android:textOn="On"
  Android:textOff="Off"
  Android:onClick="onToggleClicked"/>

次に、アクティビティJavaでハンドラーメソッドのみを定義する必要があります。

public void onToggleClicked(View view) {
    if(((ToggleButton) view).isChecked()) {
        // handle toggle on
    } else {
       // handle toggle off
    }    
}

メソッドには任意の名前を付けることができますが、署名は次の基準を満たす必要があります。

  • publicメソッドでなければなりません
  • voidを返す必要があります
  • タイプViewの単一の引数を取る必要があります(これはクリックされたViewになります)
16
davnicwil
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(isChecked){
        Toast.makeText(getApplicationContext(),"on",Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(getApplicationContext(),"off",Toast.LENGTH_SHORT).show();
    }
}
2
Arbaz Pirwani
mTB = (ToggleButton) findViewById(R.id.toggleButton1);
mTB.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // Is the toggle on?
            boolean on = ((ToggleButton) v).isChecked();

            if (on) {
                // Enable here
            } else {
                // Disable here
            }

        }
    });
1
chinnuabhi

コードから追加するには、次のようなことができます:

yourButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
      finish();
    }
  });

ただし、ボタンのXMLで、onClickアクション/イベントに関連付けるメソッドを指定することもできます。

1

setOnCheckedChangeListener のメソッド ToggleButton クラス

ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
        // 
    }
}) ;
0
Pehlaj

上記のコードが機能しない場合は試してください

b.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
       // your click actions go here
    }
});
0
Jayson Tamayo