2010-08-05 78 views
16

我需要知道,如何識別,哪個按鈕被按下。 就像我有兩個按鈕,說按鈕1和按鈕2,他們都執行相同的方法,說方法(),如何確定按下哪個按鈕?如何確定哪個按鈕按下android

問候

回答

38

大多數ellegant模式遵循:

public void onClick(View v) { 
switch(v.getId()) 
{ 
case R.id.button_a_id: 
// handle button A click; 
break; 
case R.id.button_b_id: 
// handle button B click; 
break; 
default: 
throw new RuntimeException("Unknow button ID"); 
} 

通過這種方式,它更simplier調試它,並確保您不會錯過以處理任何單擊。

1

如果「執行相同的方法,」你的意思是他們的OnClickListener,那麼你必須引用被傳遞給它的參數。

public void onClick(View v) { 
    if(v==btnA) { 
     doA(); 
    } else if(v==btnB) { 
     doB(); 
    } 
} 
-1

好得到了解決

if (yesButton.getId() == ((Button) v).getId()){ 

    // remainingNumber 
} 

else if (noButton.getId() == ((Button) v).getId()) 
{ 
    // it was the second button 
} 
4

或...您可以在 按鈕的xml代碼中放一個android:onClick =「foo」,並在java上定義一個帶簽名的方法。裏面的 方法foo,得到了ID,並且與你需要

public void foo(View v){ 

if (v.getId() == R.id.yourButton){ 

} 

else if (v.getId() == R.id.nextButton){ 

} 

} 
4

的一個比較我有10個按鈕執行相同的方法updateText(),我用這個代碼來獲取點擊按鈕的文字:

public void updateText(View v){ 
    Button btn = (Button) findViewById(v.getId()); 
    String text = btn.getText().toString(); 
} 
相關問題