Мне нужно знать, как распознать, какая кнопка нажата.
Например, если у меня есть две кнопки, скажем, кнопка 1 и кнопка2, и оба они выполняют один и тот же метод, скажем метод(), как определить, какая кнопка нажата?
Привет
Ответ 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, тогда вам нужно ссылаться на передаваемый ему параметр.
if (yesButton.getId() == ((Button) v).getId()){
// remainingNumber
}
else if (noButton.getId() == ((Button) v).getId())
{
// it was the second button
}