Первый способ - атрибут onClick

Относительно новый способ, специально разработанный для Android - использовать атрибут onClick (на панели свойств отображается как On Click):

android:onClick="onMyButtonClick"

Имя для события можно выбрать произвольное, но лучше не выпендриваться. Далее нужно прописать в классе активности придуманное вами имя метода, который будет обрабатывать нажатие. Метод должен быть открытым (public) и с одним параметром, использующим объект View. Вам нужно выучить пять слов для создания метода, а сам метод поместить в класс (если вы ещё путаетесь в структуре Java-кода, то вставьте метод перед последней фигурной скобкой):

public void onMyButtonClick(View view) { // выводим сообщение Toast.makeText(this, "Зачем вы нажали?", Toast.LENGTH_SHORT).show(); }

Когда пользователь нажимает на кнопку, то вызывается метод onMyButtonClick(), который в свою очередь генерирует всплывающее сообщение.

Обратите внимание, что при подобном подходе вам не придётся даже объявлять кнопку через конструкцию(Button)findViewById(R.id.button1), так как Android сама поймёт, что к чему. Данный способ применим не только к кнопке, но и к другим элементам и позволяет сократить количество строк кода.

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

Второй способ - метод setOnClickListener()

Более традиционный способ в Java - через метод setOnClickListener(), который прослушивает нажатия на кнопку. Так как для начинающего программиста код может показаться сложным, то рекомендуется использовать подсказки Eclipse. Вот как это будет выглядеть. Предположим, у вас на экране уже есть кнопка button1. В коде вы объявляете её обычным способом:

Button button1 = (Button) findViewById(R.id.button1);

Следующий шаг - написание метода для нажатия. Напечатайте имя элемента и поставьте точку button1. - среда разработки покажет вам список доступных выражений для продолжения кода. Вы можете вручную просмотреть и выбрать нужный вариант, а можно продолжать набирать символы, чтобы ускорить процесс. Так как с нажатиями кнопок вам часто придётся работать, то запомните название его метода (хотя бы первые несколько символов) - набрав шесть символов (setonc), вы увидите один оставшийся вариант, дальше можно сразу нажать клавишу Enter, не набирая оставшиеся символы. У вас появится строка такого вида:

button1.setOnClickListener(l)

Символ l будет выделен, а также будет видна подсказка OnClickListener l. Пока символ выделен, начинайте набиратьnew OnClickListener. Здесь также не обязательно набирать имя полностью. Наберите слово oncl и нажмите комбинацию клавиш Ctrl+Space для вывода вариантов продолжения. Eclipse предложит вам единственный вариант, поэтому сразу нажимайте Enter и вы получите готовую заготовку для обработки нажатия кнопки:

button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub }})

Вас могут испугать три красные метки об ошибках. Не пугайтесь, поставьте в самом конце заготовки символ точки с запятой ; после последней круглой скобки, и первая ошибка исчезнет. Далее подведите курсор мыши к словуOnClickListener, которая подчёркнута волнистой красной чертой. Появятся несколько вариантов для исправления ошибки. Выберите вариант Import 'OnClickListener' (android.view.View) и исчезнут оставшиеся две метки. Теперь у вас есть рабочая заготовка и сразу после строки с комментарием TODO Auto-generated method stub вы можете писать свой код. Рекомендую потренироваться и набить руку в создании заготовки. Это не так сложно и с практикой навык закрепится автоматически.

Как вариант, можно вынести код для OnClickListener в отдельное место, это удобно, когда кнопок на экране несколько и такой подход позволит упорядочить код. Удалите предыдущий пример и начните писать код заново. Принцип такой же, немного меняется порядок. В предыдущем примере мы сразу прописали в методе setOnClickListener слушателя new OnClickListener... с методом onClick(). Можно сначала отдельно объявить отдельную переменнуюmyButtonClickListener:

OnClickListener myButtonClickListener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub }};

Во время набора активно используйте подсказки через Ctrl+Space. Набрали несколько символов у первого слова и нажимайте эту комбинацию, набрали после слова new несколько символов и снова нажимайте указанную комбинацию - заготовка будет создана за несколько секунд, а вы избежите возможных опечаток.

У нас есть готовая переменная, и теперь, когда вы будете набирать код button1.setOnClickListener, то опять появится выделенный символ l, но уже с подсказкой, что можно выбрать готовую переменную - выделите её и нажмите Enter или вручную пишите самостоятельно.

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

Наши рекомендации