我正在开发一个应用程序,它要求我在按钮上实现多个单击侦听器。我被卡住了。经过一番搜索,我只遇到了一些可以实现这一目标的黑客攻击。
然而在这种情况下,有些不适用,因为在我的应用程序中,逻辑是如果单击按钮并满足条件,则第二个侦听器被调用触发另一个事件。
这看起来很棘手。有没有人有任何想法?
感谢。
答案 0 :(得分:2)
而不是制作另一个侦听器,只需根据条件调用不同的函数,而不是从唯一的侦听器调用。
答案 1 :(得分:1)
您可以使用以下方式满足您的要求:
设置全局变量说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;
}
}
这样,您就可以针对不同的条件调用不同的代码片段,并根据需要反复调用它们而不会产生冲突。
您可以设置一个案例,只需将break放在那里即可完成此方法的执行。
答案 2 :(得分:0)
在这个帖子上尝试这个检查过的答案,也许这就是你要找的东西 - Keeping multiple OnClickListeners in one class
答案 3 :(得分:0)
正如影子所指出的那样,你可以这样做:
您的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等中实现多个侦听器......