如果按下一个按钮,则按下的其他按钮应该执行其他操作

时间:2013-05-09 19:13:33

标签: android button onclicklistener buttonclick

我在一项活动中有5个按钮。我的代码应该如下工作: 按下1(正确)按钮它应该做什么。 其他4个按下,应该做的其他事情...... 我不想使用5 onclicklistener

if(Button1 press) {
    do something
}

else if (button2 or button3 or button4 or button5 press)
{
    something else to do
}

3 个答案:

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

现在您的ButtonsonClickListeners不必在代码中定义,除非您需要使用Button

执行其他操作

修改

@prosperK指出,较新的ADT将int传递给switch会导致错误,因此如果是这种情况,您可能需要if/elselink to SO post about this

答案 2 :(得分:1)

您可以定义两个不同的点击侦听器。按钮1获得第一个侦听器而其他人获得第二个侦听器。希望这会有所帮助。