Android. Работа с кнопками (Button), событие нажатия на кнопку в мобильном приложении

Android. Работа с кнопками (Button), событие нажатия на кнопку в мобильном приложении

Создаем проект, выбираем Empty Activity, Activity Name: MainActivity, Layout Name: activity_main. В лайоуте /res/layout/activity_main.xml оставляем вывод текста TextView, добавляем кнопку Button и прописываем для каждого элемента свой id. После нажатия на кнопку будем выводить текст в TextView, который покажет, что событие было обработано.

В итоге /res/layout/activity_main.xml будет выглядеть примерно следующим образом:

TextView и Button - 2 элемента которые нам понадобятся.

Далее в MainActivity (MainActivity.java) добавим описание Button и TextView, для возможности обращения к ним из любого метода класса, инициализируем их в методе onCreate() и заполним с помощью метода findViewById():

Приступаем к обработке события нажатия на кнопку.

Обработка события нажатия на кнопку в приложении

1 способ. Обработка события нажатия с помощью метода setOnClickListener

Метод setOnClickListener() прослушивает событие нажатия на кнопку. В методе onCreate() вводим имя кнопки myButton, ставим точку (.) и вводим setO, далее студия сама предложит варианты, вот что получится:

Внутри скобок набираем new O, далее студия подскажет то что необходимо (OnClickListener), в итоге получим следующее:

Далее с помощью метода setText добавляем изменение текста в TextView:

В итоге обработчик нажатия на кнопку будет выглядеть так:

Сохраняем, запускаем приложение и жмем кнопку.

Полный код MainActivity (MainActivity.java):

Код метода OnClickListener() можно вынести отдельно, например для работы с несколькими кнопками. Создаем обработчик нажатия:

И присваиваем обработчик для кнопки:

В таком случае MainActivity (MainActivity.java) примет вид:

2 способ. Обработка события нажатия с помощью интерфейса OnClickListener

Для реализация данного метода необходимо добавить в класс MainActivity интерфейс OnClickListener, делается это следующим образом - implements View.OnClickListener, после чего объявление класса примет вид:

После добавления интерфейса строка будет подчеркнута красным, все из-за того что у нас еще нет метода onClick() интерфейса OnClickListener, чтобы это исправить жмем Alt + Enter (если при нажатии ничего не происходит, то проверьте текущую раскладку, при кириллической раскладке комбинация может не работать, переведите ввод на латинскую раскладку, например на английский) в любом месте подчеркивания, далее выбираем Implemente Methods в открывшимся окне выбираем onClick и жмем ok. После чего в конец класса MainActivity будет добавлен следующий код:

В этот метод добавляем код, который необходимо выполнить по нажатию на кнопку:

Далее в методе onCreate() назначим обработчик для кнопки, в качестве параметра передаем this, т.е. текущий объект:

Сохраняем, запускаем приложение и жмем кнопку.

Полный код MainActivity (MainActivity.java):

3 способ. Обработка события нажатия с помощью атрибута onClick

В данном способе необходимо добавить атрибут onClick для нужной кнопки, есть несколько способов добавления этого атрибута:

1) Открываем activity_main.xml, во вкладке "Design" жмем на нужную кнопку и в окне "Properties", ищем свойство onClick и вводим в пустое поле название метода для обработки события нажатия кнопки.

2) Или откройте файл activity_main.xml в режиме "Text" и добавьте в элемент Button атрибут onClick с названием метода обработки нажатия кнопки:

В обоих случаях, код файла activity_main.xml будет выглядеть следующим образом:

Далее открываем класс MainActivity (MainActivity.java) и добавляем код метода clickMyBtn():

Сохраняем, запускаем приложение и жмем кнопку.

Полный код MainActivity (MainActivity.java):

3 в 1. Все 3 способа в одном примере

Далее для закрепления можно реализовать все три способа на одном экране, для этого в main_activity.xml добавим 3 кнопки, по одной кнопке на каждый способ, (полный код main_activity.xml):

И сам класс MainActivity со всеми тремя способами (файл MainActivity.java):

Сохраняем, запускаем, проверяем.

Один обработчик нажатия для нескольких кнопок

Часто необходимо сделать один обработчик нажатия для нескольких кнопок, т.к. функционал может практически не отличаться. Приведем пример для всех 3-х способов.

Один обработчик нажатия кнопки для 1-го способа, setOnClickListener

И так в main_activity.xml имеются 3 кнопки:

Открываем класс MainActivity (MainActivity.java) и в обработчик добавляем разный вывод текста в зависимости от нажатой кнопки с помощью конструкции выборки switch case:

И присваиваем кнопкам обработчик:

Сохраняем, запускаем, пробуем.

Полный код MainActivity (MainActivity.java):

Один обработчик нажатия кнопки для 2-го способа, интерфейс OnClickListener

В данном случае main_activity.xml оставляем как было описано выше (с тремя кнопками) и меняем код класса MainActivity. Добавляем интерфейс, реализацию метода onClick():

И присваиваем кнопкам обработчик:

Сохраняем, запускаем, пробуем.

Полный код класса MainActivity (MainActivity.java):

Один обработчик нажатия кнопки для 3-го способа, атрибут onClick

Для этого способа необходимо открыть activity_main.xml и добавить для всех кнопок атрибут android:onClick="clickMyBtn", для всех кнопок один метод:

В класс MainActivity добавляем метод для обработки нажатия:

Сохраняем, запускаем, пробуем.

Полный код класса MainActivity будет выглядеть следующим образом (MainActivity.java):

Обработчик события непосредственно при нажатии на кнопку

Все выше описанные методы обработки нажатия на кнопку в приложении будут срабатывать после того как вы уберете палец с кнопки, т.е. на отжатие кнопки. Для того что бы добавить обработчик непосредственно при касании, нажатии, на кнопку необходимо использовать слушатель OnTouchListener(). Попробуем его использовать.

В activity_main.xml добавим одну кнопку и текст:

А в класс MainActivity добавляем setOnTouchListener(), в метод onCreate():

Метод onTouch() содержит параметр MotionEvent, который позволяет настроить обработку в зависимости от касания.

ACTION_DOWN - событие касания по экрану (в данном случае кнопки).

ACTION_UP - соответственно срабатывает когда вы уберете палец с экрана (элемента).

Выведем в TextView информацию при нажатии на кнопку и отжатие:

Сохраняем, запускаем и пробуем.

Полный код класса MainActivity (MainActivity.java):

Дополнительно

Сделать кнопку недоступной

В классе MainActivity в методе onCreate() добавляем следующий код:

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

Так же можно отключить кнопку в activity_main.xml с помощью атрибута android:enabled="false":

Получить текст кнопки

Если у вас есть вопросы или предложения по улучшению кода описанного в статье пишите в комментариях. Я всегда открыт к конструктивному диалогу

📎📎📎📎📎📎📎📎📎📎