Одна подія onclick для кількох кнопок - stack overflow російською

Відповідь вже дан, але думаю варто роз'яснити для майбутніх користувачів.

Будь-віджет (контрол) в Android успадкований від базового класу View. У свою чергу кожному View можна поставити в соответсвтвіе деякий ідентифікатор (далі ID).

ID зазвичай призначаються в xml і використовуються для знаходження контрола в поточному дереві всіх View.

Детектування натискання (click) на будь-який View (не обов'язково Button) відбувається по засобом реалізації інтерфейсу View.OnClickListener. Це можна зробити двома способами: імплеменіровав цей інтерфейс Activity або створити інстанси анонімного класу (new View.OnClickListener ()). Але головне що треба зробити - це в обов'язковому порядку перевизначити метод OnClick () інтерфейсу View.OnClickListener. Так, і не забути, що треба призначити необхідному контрль його слухача (view.setOnClickListener (onClickListener)). В добавок один слухач можна призначити для будь-якої кількості контролів.

Як розрізняти за яким View було скоєно натискання? Достаточтно тільки подивитися на сигнатуру методу onClick інтерфейсу View.OnClickListener:

Усередині цього методу розробники дозволяють нам використовувати посилання на View. за яким було скоєно натискання (в даному випадку це View v). Залишилося просто відрізняти різні view по їх індивідуальним ознакою. Тут нам на допомогу приходить ідентифікатор ID. Метод view.getId () повертає нам значенні ідентифікатора коткретного контрола. Залишилося тільки зіставити його.

ps. Варто звернути увагу, що для системи ID є значенням типу int.

pps. Є ще 1 спосіб детектування натискання, за допомогою прямого виклику методу:

У цьому випадку просто викликається вказаний метод. Більш докладно про цей варіант почитати тут

@KoVadim, дійсно краще про збільшення бінарники просто мовчати, тому що це міф)) якщо людині потрібні базові принципи то ось на допомогу code.google.com/p/iosched. тут шукають швидкий і чітку відповідь на конкретне завдання. я без перебільшення вважаю що навчившись підключати анотації і мало-мальськи використовувати їх людина в житті не повернеться до стандартних способів розробки під андроїд. що коса прихованих багів - скажу тільки одне - в проаннотірованом коді в 200 рядків легше знайти баг ніж в коді без анотацій на 600 рядків. використовувати чи ні це справа кожного __лічно)) - SATALIN 21 Серпня '13 о 14:10

Схожі статті