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