Подтвердить что ты не робот

Как определить, какая кнопка нажата на Android

Мне нужно знать, как распознать, какая кнопка нажата. Например, если у меня есть две кнопки, скажем, кнопка 1 и кнопка2, и оба они выполняют один и тот же метод, скажем метод(), как определить, какая кнопка нажата?

Привет

4b9b3361

Ответ 1

Наиболее подходящий шаблон:

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

Таким образом, гораздо проще отладить его и убедиться, что вы не пропустите обработку любого щелчка.

Ответ 2

ИЛИ... вы можете просто поместить андроид: onClick = "foo" в xml-код и определите метод java с сигнатурой. Внутри  метод foo, получить идентификатор и сравнить его с тем, который вам нужен

public void foo(View v){

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

}

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

}

}

Ответ 3

У меня есть 10 кнопок, выполняющих один и тот же метод updateText(), я использовал этот код, чтобы получить текст с нажатой кнопкой:

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

Ответ 4

Если, "выполняя тот же метод", вы имеете в виду их OnClickListener, тогда вам нужно ссылаться на передаваемый ему параметр.

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

Ответ 5

Хорошо получилось решение

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

  // remainingNumber
 }

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