如果一个按钮按下按钮,按下的其他按钮应该做其他事情
我在一个活动中有5个按钮。我的代码应该如下工作: 1(正确)按钮,它应该做一些事情。 其他4压制,别的东西应该做的......我 不想用5 onclicklistener如果一个按钮按下按钮,按下的其他按钮应该做其他事情
if(Button1 press) {
do something
}
else if (button2 or button3 or button4 or button5 press)
{
something else to do
}
您可以定义两个不同的点击听众。按钮1获得第一个听众,其他人获得第二个。希望这可以帮助。
有几种方法可以做到这一点,但如果相同的buttons
将始终做同样的事情,那么你可以在你的xml中设置onClick(
)。
首先,定义相同的功能为每个Button
<Button
android:id="@+id/button1"
....
android:onClick="functionName"/>
<Button
android:id="@+id/button2"
....
android:onClick="functionName"/>
然后在你的代码
public void functionName(View v)
{
switch (v.getId()) // v is the button that was clicked
{
case (R.id.button1): // this is the oddball
...do stuff
break;
default: // this will run the same code for any button clicked that doesn't have id of button1 defined in xml
...do other stuff
break;
}
}
现在您Buttons
或onClickListeners
没有在你的代码中定义,除非您需要用Button
编辑
@prosperK指出,随着较新的ADT通过int
到switch
会导致错误,因此如果情况如此,您可能需要if/else
。 link to SO post about this
因此if-else更好,switch-case 。请参阅[切换大小写错误。在Mac上用于Android开发的Eclipse IDE:将工作区合规性更改为JRE 1.7](http://*.com/questions/10041414/switch-case-error-eclipse-ide-for-and-android-development-on-mac-change-工作区) – 2013-05-09 19:21:36
@ρяσѕρєяK我没有意识到这一点,谢谢。我将编辑。我只是想要求链接...再次感谢 – codeMagic 2013-05-09 19:25:16
我编辑过,以防您的评论被删除 – codeMagic 2013-05-09 19:28:46
你为什么不去做这样:
final Button button1 = (Button) findViewById(R.id.button1);
final Button button2 = (Button) findViewById(R.id.button2);
final Button button3 = (Button) findViewById(R.id.button3);
final Button button4 = (Button) findViewById(R.id.button4);
final Button button5 = (Button) findViewById(R.id.button5);
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
if (v.equals(button1)) {
// do something
} else {
// do something else
}
}
};
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);
button4.setOnClickListener(listener);
button5.setOnClickListener(listener);
除非按钮非常相似,我真的会建议使用上点击听众不同。当您在6个月内回到代码时,它使您的代码更易于阅读和理解。 – 2013-05-09 19:21:58
@GabeSechan如果所有'Buttons'只有一个做同样的事情,那么使用一个监听器更容易阅读和理解,恕我直言。如果他们做了不同的事情,那么它会让人困惑,但在这里除了一个人做同样的事情 – codeMagic 2013-05-09 19:30:24
就像我说的 - 除非他们非常相似。我只是厌倦了阅读看起来像Windows消息循环的厄运大开关语句。 – 2013-05-09 19:35:07