2011-11-07 79 views
0

我正在研究一个需要我在按钮上实现多个点击侦听器的应用程序。我被卡住了。经过一番搜索之后,我只是遇到了一些可以使这成为可能的黑客。在按钮上实现多个点击侦听器

但是在这种情况下,有些不适用,因为在我的应用程序中,逻辑是如果按钮被单击并且条件满足,则第二个侦听器被称为触发另一个事件。

这似乎很棘手。有没有人有任何想法?

谢谢。

+0

每当第一个点击侦听器执行时,为什么不调用第二个点击侦听器的实现? – flash

+1

为什么你需要多个点击监听器?难道你不能把你的逻辑放在一个点击监听器中,然后从那里调用适当的代码? – m0skit0

+0

谢谢,但是当我将逻辑放置在一个点击监听器中时,其中一个会被另一个监听器覆盖。 – user788511

回答

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

这样,您就能够调用不同的代码段用于不同的条件,并多次打电话给他们,你需要未做冲突。

您可以设置一个案例,通过在那里放置中断来摆脱此方法的执行。

+0

谢谢Hiral,这没有把戏:) – user788511

+0

@ user788511:很高兴听到! :) – Hiral

0

尝试在此线程检查这个答案,也许这是你在找什么 - Keeping multiple OnClickListeners in one class

+0

我认为这不是他/她正在寻找的东西。 –

+0

嗯,我通过switch/case来了解onClickListener的概念。而不要天真:)只有男人去这里:D – Alone89

+0

谢谢Alone89,但在我的情况下,我有一个按钮与多个听众,上面的线程是相反的..感谢所有相同的.. – user788511

2

而不是让另一听众的,只需要调用根据条件不同的功能,从你的唯一听众。

+0

影子,请你摆脱一些更多的光?我真的坚持了很长一段时间.. – user788511

+1

我从你的问题中了解到,你想根据某些条件执行不同的操作,当你按下按钮的权利?所以我的建议是在听众只是把切换条件放在每个条件你调用一个单独的函数,照顾你想要执行的整个逻辑。总之,将逻辑保持在侦听器外部,并且只是在侦听器中检查条件。希望这可以帮助。 – Shadow

+0

影子,感谢您的建议,我只是想知道,我应该通过什么条件转换?请原谅我的无知,但我想使用视图作为条件,然后我想起它将是无用的,因为只有一个按钮视图..请告诉 – user788511

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) { 
    ... 
} 

,然后实现你中的多个监听听众1,听众2等...