Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС. Лаборная работа №2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
448 Кб
Скачать

Метод onOptionsItemSelected() класса MainActivity – обработка щелчков (касаний) элементов панели действий

Так как активность MainActivity указана в качестве главной в файле манифеста приложения AndroidManifest.xml, панель действий активности MainActivity с помощью третьего метода onOptionsItemSelected() автоматически обрабатывает щелчки (касания) кнопок панели действий и элементов меню.

Методу передается item – объект класса MenuItem, импортируемого инструкцией в строке 5 листинга MainActivity.

Реализация приложения Tip Calculator

В листингах ниже приведена реализация приложения Tip Calculator в единственном классе MainActivity. Этот класс вычисляет чаевые на основе процентной ставки, равной 10%, 15%, 20%, а также на базе пользовательской процентной ставки. Чаевые вычисляются на основании выставленного счета, затем вычисленные чаевые добавляются к выставленному счету, образуя счет к оплате (total).

Инструкции package и import

В листинге ниже приводятся инструкции package и import, которые включены в класс MainActivity.java:

// MainActivity.java. Вычисляет чаевые на основе счета с 5%,

// 10%, 15% или введенной пользователем процентной ставкой.

package com.example.eugen.tipcalculator;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.text.Editable;

import android.text.TextWatcher;

import android.widget.EditText;

import android.widget.SeekBar;

import android.widget.SeekBar.OnSeekBarChangeListener;

import android.widget.TextView;

Инструкция package, находящийся в строке 3, указывает на то, что класс в этом файле является частью пакета com.example.tipcalculator. Эта строка была автоматически сгенерирована при создании проекта.

Инструкции import, находящиеся в строках 4–13, импортируют различные интерфейсы и классы, используемые приложением. Инструкции import в строках 4 – 7 были сгенерированы автоматически при создании проекта и были описаны ранее при общем описании класса MainActivity. Для приложения Tip Calculator необходимо импортировать следующие дополнительные пакеты и интерфейсы:

Интерфейс Editable из пакета android.text (строка 8) позволяет изменять содержимое и разметку текста в UI.

Интерфейс TextWatcher из пакета android.text (строка 9) служит для реагирования на события, возникающие при взаимодействии пользователя с компонентами EditText.

Пакет android.widget (строки 10–13) содержит виджеты и макеты (т. е., компоненты UI), используемые в Android UI, такие как EditText (строка 10), SeekBar (строка 11) и TextView (строка 13).

Интерфейс SeekBar.OnSeekBarChangeListener из пакета android.widget (строка 12) предназначен для реагирования на события, возникающие при перемещении ползунка SeekBar.

Класс ActionBarActivity и жизненный цикл активностей приложения Tip Calculator

В приложениях Android отсутствует главный метод main() для запуска приложения.

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

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

В этой работе нам потребуются только активности, точнее, одна активность с именем MainActivity, сгенерированная при создании проекта:

  1. // Главный класс активности для приложения Tip Calculator

  2. public class MainActivity extends ActionBarActivity {

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

Активная (или выполняющаяся) активность отображается на экране и «владеет фокусом» (т. е., возможен выбор или ввод данных с помощью мышки или клавиатуры). Именно с этой активностью взаимодействует пользователь.

Приостановленная активность отображается на экране, но не обладает фокусом. Эта активность может быть удалена из памяти операционной системой (как правило, с целью освобождения памяти, требуемой для выполнения другого приложения). Обратите внимание, что в первую очередь из памяти удаляются остановленные активности.

Остановленная активность не отображается на экране и удаляется системой при нехватке памяти.

В процессе перехода активности между различными состояниями она принимает вызовы для различных методов жизненного цикла, определенных в классе Activity. В приложении Tip Calculator реализуется два метода жизненного цикла: один основной метод onCreate() и один дополнительный метод onSaveInstanceState(). К другим основным методам жизненного цикла относятся: onStart(), onPause(), onRestart(), onResume(), onStop() и onDestroy().

  • Основной метод жизненного цикла onCreate() вызывается системой после запуска объекта класса Activity. После вызова этого метода отображается графический интерфейс пользователя, а пользователь получает возможность взаимодействия с объектом класса Activity.

  • Дополнительный метод жизненного цикла onSaveInstanceState() вызывается системой в случае изменения конфигурации устройства в процессе выполнения приложения (например, при вращении устройства пользователем или выдвижении физической клавиатуры устройства, как в оригинальном смартфоне Motorola Droid). Этот метод может применяться для сохранения информации о состоянии, которое может быть восстановлено в при вызове метода onCreate() (в качестве составной части процесса изменения конфигурации). Если приложение находится в фоновом режиме, обеспечивающем возможность ответа пользователя на телефонные звонки, либо в случае запуска пользователем другого приложения, компоненты UI приложения должны автоматически сохранять свой контент. В результате обеспечивается возврат к выполнению приложения на переднем плане (эта возможность будет доступной в том случае, если система не «убивает» приложение).

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