Учимся работать с обработкой нажатия кнопки Button
Учимся работать с обработкой нажатия кнопки Button
Главная » Учимся работать с обработкой нажатия кнопки Button

После серии сложных уроков, спустимся немного с небес программирования и уделим внимание начинающим :). В сегодняшнем уроке будет показано, как обрабатывать нажатие кнопок Button в Android приложении. Мы рассмотрим два основных метода, которые наиболее используемые в практике любого программиста. 

Итак, создаем новый проект, как это сделать читаем тут. Все названия по умолчанию, выбираем Blank Activity. Для начала нужно создать несколько кнопок, над которыми мы будем издеваться. В файле activity_main.xml создаем наши кнопки:

<LinearLayout
 xmlns:android="schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">

 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/b1"
 android:text="Кнопка 1"
 android:layout_gravity="center"/>
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/b2"
 android:text="Кнопка 2"
 android:layout_gravity="center"/>


</LinearLayout>

Как видите, мы создали всего 2 кнопочки (хватит с нас):

Создаем кнопки

Теперь приступаем к первому методу обработки нажатия. В нем мы зададим для каждой из наших кнопок свой собственный метод обработки нажатия. Как это сделать? К коду обоих кнопок мы должны добавить строку, задающую ей нажатие:

android:onClick=""

В кавычках "" мы задаем имя метода обработки щелчка, оно может быть любое, как, к примеру, и текст на кнопке. Зададим для первой кнопки метод Click1, а для второй - Click2:

 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/b1"
 android:text="Кнопка 1"
 android:layout_gravity="center"
 android:onClick="Click1"/>
 
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/b2"
 android:text="Кнопка 2"
 android:layout_gravity="center"
 android:onClick="Click2"/>

Никаких визуальных изменений при этом вид кнопки не приобрели. Но сама по себе эта строка не придала кнопкам чудесных свойств, это еще не сам метод обработки щелчка, мы просто присвоили кнопкам функцию нажатия. Метод обработки этих нажатий нужно создать, а также описать, что будет происходить при нажатии. Чтобы сделать это, мы:

     - ставим курсор на слово Click1 в первой кнопке;

     - нажимаем комбинацию клавиш Alt+Enter;

     - мы видим появившееся меню, которое предлагает нам создать метод обработки щелчка:

  Создаем обработчик нажатия

смело нажимаем на первую строку Create 'Click1(View)' in 'MainActivity'. После выбора этой строки, нас кидает а файл MainActivity.java, где мы и наблюдаем свой созданный метод для обработки нажатия кнопки 1:

public void Click1(View view) {
 }

Именно внутри этого метода мы и напишем код, который будет задавать действия при нажатии на кнопку. Сделайте аналогично метод обработки нажатия и для второй кнопки.

Теперь, чтобы проверить работоспособность кнопки и этого метода, добавим кнопкам такой функционал. При нажатии на кнопку будет появляться всплывающее Toast сообщение с текстом (для любознательных - что такое Toast и с чем его едят как его создавать). Для этого добавляем в наши методы обработки клавиш в файле MainActivity.java следующий код:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 }

 public void Click1(View view) {
 Toast.makeText(getApplicationContext(),"Вы нажали кнопку 1",Toast.LENGTH_SHORT).show();
 }

 public void Click2(View view) {
 Toast.makeText(getApplicationContext(),"Вы нажали кнопку 2",Toast.LENGTH_SHORT).show();
 }
}

На этом первый метод реализован. Можете запустить приложение на эмуляторе либо устройстве и посмотреть на результат:

Работающее приложение

Первый метод хорош когда у нас в приложении мало кнопок, либо она вообще одна. Тогда при обработке нажатия таким методом наш код не будет требовать ни много места, ни усилий. Но вот когда у нас много кнопок, а чаще всего их ну точно не одна, то лучше использовать второй метод. Он немного посложнее, но в то же время и удобнее.

Теперь, в отличии от первого способа, мы должны создать один обработчик нажатия, общий для всех кнопок. Поэтому в кодах обоих кнопок меняем в  строках android: OnClick название метода обработки, оно будет одинаково для обоих кнопок:

android:onClick="Click"

Аналогично первому способу, создаем метод обработки (курсор на Click, Alt+Enter, ну вы поняли). 

Переходим к работе в файле MainActivity.java. Ниже метода onCreate у нас создан нужный нам метод обработки нажатий:

public void Click (View view) {
}

Второй метод заключается в том, что для всех кнопок будет использоваться всего один метод обработки нажатий. С помощью команды switch (v.getId()) мы будем обращаться к необходимым кнопкам по их id (а для каждой кнопки мы его задали строчкой  android:id=""id первой кнопки "b1", второй - "b2").

В switch (view.getId()){ } мы с помощью команды case R.id. обращаемся к каждой нашей кнопке по ее id адресу и обрабатываем ее нажатие:

public void Click (View view) {
 switch (view.getId()){
 case R.id.b1:
 Toast.makeText(getApplicationContext(),"Мы нажали кнопку 1",Toast.LENGTH_LONG).show();
 break;
 case R.id.b2:
 Toast.makeText(getApplicationContext(),"Мы нажали кнопку 2",Toast.LENGTH_LONG).show();
 break;
 }

Проверим работоспособность этого метода. Запускаем приложение, нажимаем по кнопкам и видим аналогичный первому способу результат.

Вот так мы и научились создавать кнопки и освоили два разных метода обработки их нажатия. Полный код MainActivity.java для второго способа:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 }

 public void Click (View view) {
 switch (view.getId()) {
 case R.id.b1:
 Toast.makeText(getApplicationContext(), "Мы нажали кнопку 1", Toast.LENGTH_LONG).show();
 break;
 case R.id.b2:
 Toast.makeText(getApplicationContext(), "Мы нажали кнопку 2", Toast.LENGTH_LONG).show();
 break;
 }
 }
}

Надеюсь у вас все получилось, удачи!

Категория: Уроки программирования | Просмотров: 1600 | Добавил: Oleg | Теги: обработчик нажатия, нажатие, Burron, методы работы с кнопкой | Рейтинг: 0.0/0
Всего комментариев: 0
avatar