Intereting Posts
Почему мы получаем эти «недействительные» намерения? ListView с ArrayAdapter и ViewHolder добавляет значки к неправильному элементу Как заставить TextWatcher ждать некоторое время, прежде чем делать какие-либо действия Что означает «работает в потоке пользовательского интерфейса» для onPostExecute ()? Перекрытие эффекта тени остается в навигационном навигационном навигаторе Android – переключение вкладок изнутри действия на вкладке GetLoaderManager (). InitLoader () не принимает аргумент «this», хотя класс (ListFragment) реализует LoaderManager.LoaderCallbacks <Cursor> API Android Google Maps V2, отменяющий часть макета Импортируйте Android-зал в Android Studio Как я могу добавить файл helpl в студию Android (из примера выставления счетов в приложении) Как сделать мой макет способным прокручивать вниз? Почему onUpgrade () не используется в базе данных Android sqlite? Запуск двух (или более) функций одновременно в Android Path () – интеллектуальные цветные сегменты GetFragmentManager из ArrayAdapter

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

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

Solutions Collecting From Web of "Прикрепить onClickListener to 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 } });