Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / ЛБ Android Studio / 03_Обработка_нажатия_кнопок

.doc
Скачиваний:
16
Добавлен:
17.06.2023
Размер:
282.11 Кб
Скачать

Обработки нажатия кнопок.

1. Щелчок кнопки/Счётчик ворон

Освежим свои знания. Можете использовать старый проект или создать новый проект с стандартными настройками.

В прошлый раз мы использовали ImageButton. Сегодня будем работать с обычной кнопкой. Подведите курсор к элементу Button и перетащите его на форму. В результате ваших действий на форме появится стандартная кнопка с настройками по умолчанию. В правой части экрана у вас имеется окно Properties, в котором вы можете настроить необходимые свойства для кнопки. Например, найдите свойство Text и присвойте ему свой текст Поздороваться. По своей старой привычке я присвоил свойству id новое значение @+id/butHello вместо стандартного @+id/button1.

Если вы открыли предыдущий проект, то там уже был элемент TextView с текстом Hello, World (если вы создали новый проект). Элемент TextView является текстовой меткой для вывода текста, который нельзя редактировать. В метке будем выводить приветствие после щелчка кнопки. В окне свойств удаляем текст из свойства Text, чтобы в текстовой метке ничего не было. Проследите, чтобы у него был идентификатор. Если в окне свойств ничего нет, то добавьте свой идентификатор, например, @+id/textView1.

Если вам не нравится взаимное расположение элементов, то можете на форме перетаскивать элементы, меняя их местами.

Будем считать, что интерфейс программы готов - у нас есть кнопка для нажатия и текстовая метка для вывода сообщений.

Теперь нужно научиться писать код для щелчка кнопки. Переключитесь с вкладки Graphical Layout на вкладкуactivity_main.xml и найдите тег <Button>. Добавьте к нему еще одну строчку:

На самом деле это можно было сделать и через графическую модель. Переключитесь обратно в Graphical Layout и найдите в свойствах кнопки пункт On click. Там будет прописано имя метода, которое мы задали через XML. Пользуйтесь любым удобным вам способом.

Таким образом мы определили событие butHello_Click для кнопки (щелчок) и теперь осталось написать обработчик события. Открываем файл HelloWorld.java (у вас может быть другое имя) и пишем сразу после метода onCreate():

Впрочем, это код нам уже знаком по предыдущему занятию.

Обратите внимание, что имя метода butHello_Click() должно совпадать со строкой, которую мы задали в атрибутеandroid:onClick для кнопки, а также добавляем скобки с текстом View v. В фигурных скобках пишем код, который должен выполниться при щелчке кнопки. Так как нам надо вывести текст в текстовой метке, то сначала сообщаем системе, что собираемся использовать данный элемент, а затем присваиваем ему нужный текст через методsetText().

Запускаем проект и нажимаем на кнопку, чтобы увидеть результат. Можете изменить текст по своему желанию, например, на Ты кто такой? Давай, до свидания!, но это сообщение будет выглядеть мягко говоря, странным.

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

Здесь стоит обратить внимание на строчку TextView tvHello = (TextView)findViewById(R.id.textView1);. МетодfindViewById() используется для получения ссылки на элемент, у которого мы определили ID. В дальнейшем вы постоянно будете использовать данный код в своих программах.

В коде стандартного шаблона BlankActivity вы также можете видеть сгенерированный код для методаonCreateOptionsMenu(). Пока не обращайте на него внимания, это код для вызова меню. Если вам интересно, то можете нажать на кнопку Menu в эмуляторе, чтобы вызвать меню на экран (появится пункт Settings).

Новички на первых порах часто делают элементарную ошибку - помещают строчку инициализации объекта до методаsetContentView(). Запомните, сначала нужно вывести шаблон (R.layout.activity_main), а только потом кнопки, текстовые поля, переключатели и т.д. В нашем случае используется отдельный метод для кнопки, который формируется после метода setContentView(). Позже, в других проектах вы увидите стандартные приёмы инициализации объектов.

2. Другой способ обработки щелчка кнопки

На самом деле, способ обработки щелчка кнопки, который я вам показал, является относительно новым для разработчиков. Google рекомендует использовать данный способ как удобный, требующий меньше кода и понятный для чтения. Но тем не менее вам придётся сталкиваться со старым способом, который берет свои корни от Java. Поэтому необходимо изучить и второй способ, чтобы понимать другие примеры.

Добавьте в проект новую кнопку. Если первую кнопку мы добавляли перетаскиванием элемента Button с панели инструментов, то на этот раз мы попробуем создать кнопку вручную. Откройте файл activity_main.xml в режиме редактора кода и скопируйте код для первой кнопки. Потом с новой строки вставьте скопированный текст и подправьте несколько атрибутов, например, так.

Я поменял для кнопки текст и идентификатор, а также некоторые параметры, отвечающие за положение кнопки на экране. Переключитесь в графический режим и посмотрите, как выглядит кнопка. Обратите внимание, что строкуandroid:onClick="butCrowsCounter_Click" мы уже не используем.

Снова открываем файл HelloWorld.java и пишем следующий код сразу после объявления класса и до методаonCreate():

Когда вы напишете код, то слева появится предупреждающий значок. Если подвести курсор к значку, то появится всплывающая подсказка: Button cannot be resolved to a type. Теперь подведите курсор к слову Button. Снова появится всплывающее окно, в котором среда разработки предложит вам несколько вариантов исправления ошибки. В нашем случае необходимо выбрать первый вариант: Import 'Button' (android.widget). Тогда у вас в секции Imports в верхней части кода появится строчка import android.widget.Button; и предупреждающий значок исчезнет.

После строчки setContentView(R.layout.activity_main); пишем:

Ещё раз напоминаю, не копируйте текст со страницы, а вводите текст вручную. Так вы быстрее освоите программирование, кроме того научитесь пользоваться системой подсказок Eclipse. Например, попробуйте после ввода первых трех символов fin нажать комбинацию клавиш Ctrl+Space. Вы увидите, как среда разработки сама вставит нужное слово findViewById(), а курсор будет находиться уже между скобками. Продолжайте набирать символ R, а затем символ точки, и увидите новую подсказку. Если подсказка совпадает с вашими намерениями, то нажмите клавишу Enter. Освоившись с системой подсказок, вы повысите скорость набора кода, а также уменьшите количество опечаток.

Ну а мы переходим к самому важному - обработчику щелчка кнопки. Нам понадобится дополнительная переменная-счетчик count, которая будет содержать число подсчитанных ворон (её необходимо разместить выше метода onCreate).

Теперь пишем обработчик, активно используя всплывающие подсказки для быстрого набора. Код добавляется в методе onCreate() после других строк, написанных ранее в этом методе.

При этом не забудьте импортировать интерфейс import android.view.View.OnClickListener;

Слово tvHello будет подчёркнуто, так как мы ранее объявили этот элемент внутри метода butHello_Click(), из которого элемент недоступен в других методах. Поэтому поступим также, как с кнопкой - объявим метку на уровне класса и инициализируем её в методе onCreate().

Запускаем приложение и начинаем щёлкать по кнопке. При каждом щелчке счётчик count будет увеличиваться на единицу и эта информация будет отображаться на экране.

Мы познакомились с новым способом обработки щелчка кнопки. Какой способ вы предпочтёте - зависит от ваших привычек и вкуса.

Теперь у вас есть чрезвычайно полезное приложение Счётчик ворон. Если преподаватель вас неожиданно спросит на занятии, почему вы смотрите в окно с рассеяным видом, вы можете смело достать свой телефон и сказать, что заняты очень важным делом - считаете ворон.

3. Дополнительное задание

Добавьте в проект ещё одну кнопку, чтобы считать отдельно котов и ворон.