реализовать более одного прослушивателя одним нажатием кнопки - PullRequest
0 голосов
/ 07 ноября 2011

Я работаю над приложением, которое требует, чтобы я реализовал более одного прослушивателя щелчка на кнопке. Я застрял. После некоторых поисков я наткнулся на несколько хаков, которые могут сделать это возможным.

Однако в этом случае некоторые из них не применимы, поскольку в моем приложении логика заключается в том, что если кнопка нажата и условие выполнено, то второй слушатель вызывается для запуска другого события.

Это кажется хитрым. У кого-нибудь есть идеи?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 07 ноября 2011

Вместо создания другого слушателя, просто вызовите различные функции в зависимости от условий, от вашего единственного слушателя.

1 голос
/ 07 ноября 2011

вы можете удовлетворить ваши требования, используя это:

установить глобальную переменную, скажем int condition_number=0;

затем,

mButton.setOnClickListener(new OnClickListener)
{    
     performThis(condition_number);
}

perforThis(int number)
{
   switch(number) 
   {
       case 1:
              //do some stuff for condition 1
              //set condition_number accordingly,relatively to what you want to perform next
              performThis(codition_number);
              break;

       case 2:
              //do some stuff for condition 2
              //set condition_number accordingly,relatively to what you want to perform next
              performThis(codition_number);
              break;

       case 3:
              //do some stuff for condition 3
              //set condition_number accordingly,relatively to what you want to perform next
              performThis(codition_number);
              break;

       default:
               //do something
               break;
   }
}

Таким образом, вы сможетевызывать разные фрагменты кода для разных условий и многократно вызывать их по мере необходимости, не создавая конфликтов.

Вы можете задать случай, чтобы выйти из выполнения этого метода, просто поместив в него разрыв.

0 голосов
/ 07 ноября 2011

Как указывает тень, вы можете сделать что-то вроде этого:

ваш макет XML:

<Button
     android:layout_height="wrap_content"
     android:layout_width="wrap_content"
     android:text="@string/doStuff"
     android:onClick="doStuff" />

в вашей деятельности:

function void doStuff(View target) {
   listener1(target);
   listener2(target);
   ...
}

function void listener1(View target) {
   ...
}

function void listener2(View target) {
   ...
}

реализовать несколько слушателей в listener1, listener2 и т. д. *

0 голосов
/ 07 ноября 2011

попробуйте этот проверенный ответ в этой теме, возможно, это то, что вы ищете - Хранение нескольких OnClickListener в одном классе

...