我在一项活动中有 5 个按钮。我的代码应该如下工作: 1(正确)按钮按下它应该做一些事情。按下其他 4 个,应该做其他事情...我不想使用 5 个 onclicklistener
if(Button1 press) {
do something
}
else if (button2 or button3 or button4 or button5 press)
{
something else to do
}
我在一项活动中有 5 个按钮。我的代码应该如下工作: 1(正确)按钮按下它应该做一些事情。按下其他 4 个,应该做其他事情...我不想使用 5 个 onclicklistener
if(Button1 press) {
do something
}
else if (button2 or button3 or button4 or button5 press)
{
something else to do
}
你为什么不这样做:
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);
有几种方法可以做到这一点,但如果buttons
总是做同样的事情,那么你可以onClick(
在你的 xml 中设置 )。
首先,为每个定义相同的函数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
oronClickListeners
不必在你的代码中定义,除非你需要用Button
编辑
@prosperK 指出,随着较新的 ADT 传递int
给switch
原因错误,因此if/else
如果是这种情况,您可能需要一个。链接到关于此的 SO 帖子
您可以定义两个不同的点击侦听器。按钮 1 获得第一个听众,其他人获得第二个听众。希望这可以帮助。