Підключення контролера – програмування Android

У розділі «Збірка графічного інтерфейсу» вище ми показали вид з двома кнопками Звичайно, це симпатичні кнопки, але вони марні При їх натисненні нічого не відбувається

У підрозділі «Контролер» попереднього розділу було описано, як фреймворк Android перетворює зовнішні впливи (дотику до екрану, натиснення клавіш і т д) в події, які шикуються в чергу, а потім передаються з додатком У прикладі 74 показано, як додати обробник подій до однієї з кнопок демонстраційного прикладу так, щоб при натисканні відбувалося певну дію

Приклад 74 Підключення кнопки

Після запуску такий варіант додатка раніше дуже нагадує рис 72 Але, на відміну від попереднього прикладу в даній версії, всякий раз, коли користувач натискає кнопку Green (Зелений), цифри в полях EditText змінюються (рис 74)

Рис 74 Робоча кнопка

Звичайна зміна цифр – не така вже цікава функція, але цей невеликий приклад демонструє стандартний механізм, за допомогою якого додаток реагує на події для користувача інтерфейсу Важливо відзначити що, незважаючи на Створюється враження, даний приклад не порушує правила розподілу відповідальності, прийнятого в MVC У відповідь на виклик set Text даної реалізації OnClіckListener обєкт EditText оновлює внутрішнє подання тексту, який слід відобразити, а потім викликає власний метод invalidate Негайної отрисовки на екрані не відбувається Взагалі, дуже небагато правила в програмуванні є абсолютними Зауваження про необхідність поділу моделі, виду і контролера – майже абсолютне правило

У даному прикладі екземпляр класу Button підключається до його поведінки за допомогою зворотного виклику Button – це підклас View, що визначає інтерфейс під назвою OnCl и ckListener і метод, який називається setOnClіckListener, за допомогою якого реєструється слухач Інтерфейс OnClіckListener визначає єдиний метод – onClick Коли кнопка Button отримує подія від фреймворка, то додатково до всіх іншим завданням, які йому доводиться виконати, кнопка перевіряє подія і визначає, кваліфікується чи воно як клацання (Кнопка з першого прикладу при натисканні вже підсвічується, навіть поки до неї ще не додано слухач) Якщо подія кваліфікується як клацання, а до кнопки доданий слухач клацань, то активується метод onClick, що відноситься до слухача

Слухач клацань вільно може реалізовувати будь-які необхідні користувальницькі поведінки Зокрема, в попередньому прикладі для користувача поведінка створює два випадкових числа в діапазоні від 0 до 200 і ставить по одному числу в кожне з двох текстових полів Можна і не робити підклас від Button і не перевизначати його методи обробки подій Все, що потрібно для розширення існуючого поведінки, – Зареєструвати слухач клацань, який реалізує бажану поведінку Звичайно ж, так набагато простіше

Оброблювач клацань особливо цікавий ще й тим, що в самому серці системи Android – в черзі подій фреймворка – немає такого феномена, як подія клацання Замість цього при обробці подій View концепція клацання синтезується з інших подій Якщо пристрій має сенсорний екран, то, наприклад, легкий удар пальцем по екрану сприймається як клацання Якщо на пристрої є центральна клавіша на ігровий хрестовині або клавіша Enter, то при натисканні та відпусканні кожної з цих клавіш також буде реєструватися клацання Клієнтам виду неважливо, яку саме подію сприймається як клацання і як воно генерується на конкретному пристрої Клієнти повинні обробляти тільки подія в загальному вигляді, а деталями виконання слід займатися фреймворку

У View може бути тільки один onClіckListener При повторному виклику методу onClіckListener до того чи іншого View старий слухач буде видалений, а на його місце поставлений новий З іншого боку, окремий слухач може приймати сигнали не тільки від одного View Наприклад, код з прикладу 75 – це частина іншої програми, яке виглядає точно як програма з прикладу 72 Але в даному випадку вміст текстового поля буде оновлюватися при натисканні будь-який з двох кнопок

Така можливість може бути дуже зручна в додатку, де кілька впливів викликають однакове поведінку Але не піддавайтеся спокусі створити єдиний, колосальний слухач для всіх ваших віджетів Якщо зробити в коді безліч дрібних віджетів, кожен з яких реалізує одиночне, чітка поведінка, то такий код буде набагато простіше підтримувати і модифікувати

Приклад 75 Слухання декількох кнопок

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*