Страницы

Поиск по вопросам

вторник, 26 февраля 2019 г.

Как разместить в одном активити 2 кнопки ToggleButton

Как добавить в активити еще один слушатель ToggleButton для второй кнопки? Вот как я использую одну кнопку (к сожалению, в учебниках обычно приводят примеры на одну кнопку)
public class XXX extends ActionBarActivity implements OnCheckedChangeListener { ToggleButton tbutton1;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xxx); tbutton = (ToggleButton) findViewById(R.id.tbutton1); } //...
@Override public void onCheckedChanged(CompoundButton buttonView, boolean tg1) { if (tg1) { // ... }};


Ответ

Есть несколько способов, вот некоторые из них:
В каждый обработчик в качестве параметра приходит view для которого произошло данное событие. Следовательно у полученного view можно взять id и в зависимости от этого выполнить те или иные действия.
@Override public void onCheckedChanged(CompoundButton buttonView, boolean tg1) { switch(buttonView.getId()) {
case R.id.toggle1: //событие от первой кнопки, делаем А break;
case R.id.toggle2: //событие от второй кнопки, делаем Б break;
default: break; } } Для каждой view создавать обработчик как экземпляр анонимного класса
private OnCheckedChangeListener toggle1Listener = new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean tg1) { //делаем А } }
private OnCheckedChangeListener toggle2Listener = new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean tg1) { //делаем Б } }
//установка в методе onCreate() toggle1.setOnCheckedChangeListener(toggle1Listener); toggle2.setOnCheckedChangeListener(toggle2Listener);
UPD: забыл сказать что для второго случая нет необходимости реализовывать интерфейс OnCheckedChangeListener в Activity

Комментариев нет:

Отправить комментарий