Клас Button - найпростіший з усіх елементів управління і при цьому найбільш використовуваний. Найчастіше кнопка вимагає написання коду обробки події натискання onClick.
Наступний приклад реалізує обробник події onclick (). Коли виконується клацання на кнопці, з'являється повідомлення, яке відображає ім'я кнопки. Створіть в середовищі Eclipse новий проект і в діалозі Create New Project введіть такі значення:
- Project name - ButtonApp;
- Application name - Button Sample;
- Package name - сот.samples. button;
- Create Activity - ButtonActivity.
Відкрийте файл розмітки і створіть розмітку LinearLayout і в ній дві кнопки з ідентифікаторами buttonl і button2, написами "Button 1" і "Button 2".
Тепер в класі EuttonActivity підключимо обробники подій для кнопок, як показано в лістингу нижче:
Виконайте компіляцію проекту. При натисканні відповідної кнопки в написи під кнопками буде відображатися повідомлення про натисканні цієї кнопки.
Приклад програми з кнопками
Існують і інші варіанти підключення подій. У попередньому прикладі обробники подій були реалізовані всередині тіла методу onCreate (). Наявність безлічі вкладених блоків коду створює труднощі сприйняття коду, особливо іншими програмістами, тому бажано виносити обробники подій за межі методу onCreate (). У методі setOnClickListener () як параметр передається ім'я методу зворотного виклику, який ми будемо реалізовувати:
Потім ми описуємо реалізацію цього методу:
// дії по обробці події
Внесіть в клас ButtonActivity зміни, як показано в лістингу, і скомпілюйте проект. Результат не змінився, але код класу став легше для сприйняття.
i Лістинг 6.11 Підключення обробників подій
Нарешті, є ще спосіб, більш ефективний, ніж попередні, - реалізувати обробку однотипних подій всіх елементів в одному методі. Для цього в нашому класі необхідно реалізувати інтерфейсView.OnClickListener:
Цей інтерфейс містить єдиний метод abstract void onClick (View v), який необхідно визначити в нашому класі ButtonActivity. Якщо визначено ідентифікатор елемента (наприклад, у файлі розмітки), то можна написати обробку подій елементів в операторі switch, отримавши id елемента методом getid ():
// визначаємо ID елемента і обробляємо подія
- Project name - EditTextApp;
- Application name - Edi tTextSample;
- Package name - com. samples. edittext;
- Create Activity - AutoCompleteTextViewActivity.
Створіть файл розмітки, як в лістингу.
У нашому прикладі крім елемента EditText буде невелике меню з п'яти кнопок для зміни стилю тексту і його розміру.
Лістинг. Файл класу діяльності EditTextActivity.Java