我在一個活動中有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
}
您可以定義兩個不同的點擊聽衆。按鈕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://stackoverflow.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