我在一项活动中有5个按钮。我的代码应该如下工作: 按下1(正确)按钮它应该做什么。 其他4个按下,应该做的其他事情...... 我不想使用5 onclicklistener
if(Button1 press) {
do something
}
else if (button2 or button3 or button4 or button5 press)
{
something else to do
}
答案 0 :(得分:6)
你为什么不这样做:
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);
答案 1 :(得分:4)
有几种方法可以做到这一点,但如果相同的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
答案 2 :(得分:1)
您可以定义两个不同的点击侦听器。按钮1获得第一个侦听器而其他人获得第二个侦听器。希望这会有所帮助。