bannerbannerbanner
полная версияПрограммирование приложений для мобильных устройств под управлением Android. Часть 1

Евгений Владимирович Сенько
Программирование приложений для мобильных устройств под управлением Android. Часть 1

Вот пример приложения под названием «UITabLayout», который использует класс ActionBar.Tab, чтобы переключаться между двумя фрагментами, которые используют лейаут gridView.


Давайте рассмотрим исходный код этого приложения. Откроем файл tab_layout_activity и перейдем к методу onCreate. Во-первых, код получает Action Bar и конфигурирует его, чтобы он работал в режиме вкладок.



Затем создаем фрагмент с gridView и передаем ему список изображений, которые он должен вывести на экран. В первом случае это изображения цветов. Наконец, создаем и конфигурируем новую вкладку и присоединяем ее к Action Bar. И то же самое сделаем с другой вкладкой. Теперь, когда вкладки добавлены, создаем экземпляры «слушателей» вкладки (TabListener). Это объекты, которые будут вызваны, когда пользователь выберет какую-либо вкладку.




Метод onTabSelected. Когда вкладка выбрана, этот код добавляет соответствующий фрагмент в Activity. Далее – метод onTabUnselected. Когда вкладка отменяется (при выборе другой вкладки), этот код удаляет текущий фрагмент из Activity.

Диалог – своего рода независимое окно, которое Activity использует для коротких связей с пользователем. Некоторые из классов диалогов, предоставляемые Android, это диалоги оповещения (alert), прогресса (ProgressDialog) и диалоговые окна выбора даты (DatePicker) и времени (TimePicker).

Давайте рассмотрим пример приложения, которое использует и AlertDialog, и ProgressDialog. Приложение «UIAlertDialog». Когда оно запущено, на экран выведена одна кнопка, которую пользователь может нажать, чтобы инициировать закрытие приложения. Если сделать это, то приложение раскрывает диалоговое окно оповещения – alert dialog, которое показывает сообщение «Вы действительно хотите выйти?» и предлагает пользователю ответить «Да» или «Нет».



Выберем сейчас «No» – это просто закроет диалоговое окно и возвратит назад в приложение. Скажем, через некоторое время я действительно захочу выйти. Тогда я нажму кнопку завершения работы снова, которая выведет то же самое диалоговое окно на экран. На сей раз, однако, я выберу кнопку «Yes». В этой точке диалоговое окно alert dialog закроется, а новое диалоговое окно – на сей раз диалоговое окно прогресса (progress dialog) – будет выведено на экран. Оно сообщает мне, что процесс завершения работы продолжается. В конечном счете процесс завершается и приложение закрывает себя.

Давайте рассмотрим как это реализовано в исходном коде. Откроем файл alert_dialog_activity и перейдем к методу onCreate. Когда пользователь нажимает кнопку ShutDown, вызывается метод showDialogFragment, передавая ID желаемого диалогового окна. Метод showDialogFragment создает экземпляр AlertDialogFragment и затем вызывает его методом show.

AlertDialogFragment – это подкласс DialogFragment. И у него есть метод onCreateDialog. Этот метод будет вызван в ответ на вызов метода show. Он создает новый экземпляр диалогового окна (alert dialog).



Фактически здесь вы видите вызов setMessage. И сразу после этого – вызов setCancelable, затем – вызов setNegativeButton, и т. д. Как только мы сделали все вызовы, какие хотели, мы заканчиваем эту часть кода вызовом метода create, который эффективно соединяет все предыдущие вызовы и возвращает конечный сконфигурированный объект. Когда это диалоговое окно выведено на экран, если пользователь выбирает «No», то происходит вызов continueShutdown с параметром shouldContinue, равным false. А если пользователь выбирает «Yes», то происходит вызов continueShutdown с параметром true. Таким образом, если shouldContinue равен false, то мы закрываем диалоговое окно, и все продолжается, как будто ничего не произошло. А если shouldContinue – true, мы закрываем диалог и затем вызываем showDialogue, передавая ему тег прогресса ID. Это создает объект progressDialogueFragment и затем вызывает его методом show. В конечном счете мы заканчиваем методом onCreateDialogue в классе progressDialogueFragment, где мы создаем новый диалог прогресса (ProgressDialog), устанавливаем ему сообщение «Activity Shutting Down», и затем вызываем setIndetermitate с параметром true, который позволит диалоговому окну оставаться видимым, пока оно не будет закрыто.

1  2  3  4  5  6  7  8  9  10  11  12  13  14 
Рейтинг@Mail.ru