2013-05-09 108 views
1

我在一個活動中有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

除非按鈕非常相似,我真的會建議使用上點擊聽衆不同。當您在6個月內回到代碼時,它使您的代碼更易於閱讀和理解。 – 2013-05-09 19:21:58

+0

@GabeSechan如果所有'Buttons'只有一個做同樣的事情,那麼使用一個監聽器更容易閱讀和理解,恕我直言。如果他們做了不同的事情,那麼它會讓人困惑,但在這裏除了一個人做同樣的事情 – codeMagic 2013-05-09 19:30:24

+0

就像我說的 - 除非他們非常相似。我只是厭倦了閱讀看起來像Windows消息循環的厄運大開關語句。 – 2013-05-09 19:35:07

回答

1

您可以定義兩個不同的點擊聽衆。按鈕1獲得第一個聽衆,其他人獲得第二個。希望這可以幫助。

3

有幾種方法可以做到這一點,但如果相同的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通過intswitch會導致錯誤,因此如果情況如此,您可能需要if/elselink to SO post about this

+0

因此if-else更好,switch-case 。請參閱[切換大小寫錯誤。在Mac上用於Android開發的Eclipse IDE:將工作區合規性更改爲JRE 1.7](http://stackoverflow.com/questions/10041414/switch-case-error-eclipse-ide-for-and-android-development-on-mac-change-工作區) – 2013-05-09 19:21:36

+0

@ρяσѕρєяK我沒有意識到這一點,謝謝。我將編輯。我只是想要求鏈接...再次感謝 – codeMagic 2013-05-09 19:25:16

+0

我編輯過,以防您的評論被刪除 – codeMagic 2013-05-09 19:28:46

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