Android 在按钮上实现多个单击侦听器

Android 在按钮上实现多个单击侦听器,android,events,routes,event-bubbling,Android,Events,Routes,Event Bubbling,我正在开发一个应用程序,它要求我在一个按钮上实现多个单击侦听器。我被卡住了。经过一番搜索,我只发现了一些可以使之成为可能的黑客 但是在这种情况下,有些是不适用的,因为在我的应用程序中,逻辑是如果单击按钮并且满足条件,那么第二个侦听器将被称为触发另一个事件 这似乎很棘手。有人有什么想法吗 谢谢。不要创建另一个侦听器,只需根据条件从您的唯一侦听器调用不同的函数。不要创建另一个侦听器,只需根据条件从您的唯一侦听器调用不同的函数。正如shadow所指出的,您可以这样做: 您的XML布局: <But

我正在开发一个应用程序,它要求我在一个按钮上实现多个单击侦听器。我被卡住了。经过一番搜索,我只发现了一些可以使之成为可能的黑客

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

这似乎很棘手。有人有什么想法吗


谢谢。

不要创建另一个侦听器,只需根据条件从您的唯一侦听器调用不同的函数。

不要创建另一个侦听器,只需根据条件从您的唯一侦听器调用不同的函数。

正如shadow所指出的,您可以这样做:

您的XML布局:

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

然后在listener1、listener2等中实现多个侦听器。

正如shadow所指出的,您可以这样做:

您的XML布局:

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

然后在listener1、listener2等中实现多个侦听器。

您可以使用以下方法满足您的要求:

设置一个全局变量,比如
int condition\u number=0

那么

这样,您就可以针对不同的条件调用不同的代码段,并根据需要重复调用它们,而不会产生冲突


您可以设置一个案例,只需将break放在那里,即可退出此方法的执行。

您可以使用以下方法满足您的要求:

设置一个全局变量,比如
int condition\u number=0

那么

这样,您就可以针对不同的条件调用不同的代码段,并根据需要重复调用它们,而不会产生冲突


您可以设置一个案例,通过在其中放置break来退出此方法的执行。

为什么不在执行第一个单击侦听器时调用第二个单击侦听器的实现?为什么需要多个单击侦听器?你不能把你的逻辑放在一键式侦听器中,然后从那里调用相应的代码吗?谢谢,但是当我把逻辑放在一键式侦听器中时,一个被另一个覆盖。为什么不在执行第一个单击侦听器时调用第二个单击侦听器的实现?为什么需要多个单击侦听器?你不能把你的逻辑放在一键式侦听器中,然后从那里调用相应的代码吗?谢谢,但是当我把逻辑放在一键式侦听器中时,一个被另一个覆盖了..Shadow,你能再解释一下吗?我真的被这个问题困扰了很长时间。我从你的问题中了解到的是,当你按下按钮时,你想根据某些情况执行不同的操作,对吗?所以我的建议是,在监听器中,只放置开关条件,对于每个条件,您调用一个单独的函数,该函数负责您想要执行的整个逻辑。简而言之,将逻辑保持在监听器之外,只在监听器中检查条件。希望这有帮助。影子,谢谢你的建议,我只是想知道,我应该在什么条件下通过开关?请原谅我的无知,但我正考虑使用视图作为条件,然后我记得这将是无用的,因为只有一个按钮视图..请建议Shadow,您可以再多放一些光吗?我真的被这个问题困扰了很长时间。我从你的问题中了解到的是,当你按下按钮时,你想根据某些情况执行不同的操作,对吗?所以我的建议是,在监听器中,只放置开关条件,对于每个条件,您调用一个单独的函数,该函数负责您想要执行的整个逻辑。简而言之,将逻辑保持在监听器之外,只在监听器中检查条件。希望这有帮助。影子,谢谢你的建议,我只是想知道,我应该在什么条件下通过开关?请原谅我的无知,但我想使用视图作为条件,然后我记得这将是无用的,因为只有一个按钮视图..请advise@user788511(听到这个消息很高兴!)@用户788511:很高兴听到这个消息!:)
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;
   }
}