Прикрепить onClickListener to ToggleButton

У меня есть ToggleButton, и мне нужно настроить простые действия щелчка. Как реализовать простой клик для ToggleButton? Если вам нужны детали, пожалуйста, спросите.

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 } }); 
  this.someToggleButton = (ToggleButton)findViewById(R.id.someToggleButton) ; this.someToggleButton.setOnCheckedChangeListener( new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) { doSomethingWith(toggleButton, isChecked) ; } }) ; 

Используйте 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 } }); 

Просто добавьте точку, не подчеркнутую в других ответах, – программная привязка обработчика кликов немного тяжела для кода bolierplate. Как упоминалось в документах , это необходимо только в определенных сценариях, таких как:

  • Если ToggleButton создается во время выполнения
  • Если поведение клика определено в подклассе Fragment

Если 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"/> 

Тогда только метод обработчика должен быть определен в Activity Java

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

Обратите внимание, что метод может иметь любое имя, но подпись должна соответствовать этим критериям:

  • Должен быть public методом
  • Должен возвращать void
  • Необходимо принять один аргумент типа View (это будет View который был нажат)

Чтобы добавить его из кода, вы можете сделать что-то вроде:

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

Однако вы также можете указать в XML для своей кнопки, какой метод вы хотите связать с действием / событием onClick.

 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 } } }); 

Если выше коды не работают, попробуйте

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