Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы / ЛБ Android Studio / 05_Переключение_между_экранами.doc
Скачиваний:
17
Добавлен:
17.06.2023
Размер:
779.78 Кб
Скачать

Создаём третий экран (способ для ленивых).

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

В этом случае нажмите комбинацию клавиш Ctrl+N. Откроется диалоговое окно для выбора мастера. В поле Wizards:будет текст type filter text, предлагающий ввести текст для быстрого поиска нужного мастера. Начинайте вводить словоActivity, чтобы быстро найти мастер для создания новой активности Android Activity:

Нажимаем на кнопку Next, чтобы перейти к знакомому окну выбора шаблона для экрана. Пусть будет шаблонBlankActivity.

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

В последнем шаге мастера настроек вы можете видеть, какие изменения произойдут в проекте. Eclipse самостоятельно добавит записи о новой активности в манифест, добавит необходимые строковые ресурсы в файл strings.xml, создаст класс и т.д. Осталось нажать на кнопку Finish и продолжить работу над проектом.

На первых порах я бы посоветовал вам вручную создавать все необходимые компоненты для новой активности, чтобы понимать взаимосвязь между классом, разметкой и манифестом. А когда набьёте руку, то можете использовать мастер создания активности для ускорения работы.

2. Передача данных между активностями

Мы использовали простейший пример для вызова другого окна. Но, иногда требуется не только вызвать новое окно, но и передать в него данные. Например, имя пользователя. В этом случае нужно задействовать специальную областьextraData, который имеется у класса Intent.

Область extraData - это список пар ключ/значение, который передается вместе с намерением. В качестве ключей используются строки, а для значений можно использовать любые примитивные типы данных, массивы примитивов, объекты класса Bundle и др.

Для передачи данных в другую активность используется метод putExtra():

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

Напишем следующий пример. Создадим две активности как обычно (классы PassingDataDemoActivity.java и Privet.java). На первой форме разместим два текстовых поля и кнопку.

У второй активности установим элемент TextView, в котором будем выводить какой-нибудь текст. Код для него будет следующим.

Если сейчас запустить программу и просто вызвать второе окно, как это было описано в первой части статьи, то мы увидим надпись по умолчанию ЖЫвотное, вам передали дырку от бублика. Согласитесь, довольно обидно получать такие сообщения.

Исправляем ситуацию. Добавляем код у первой активности:

Итак, мы поместили в специальный контейнер у объекта Intent два ключа со значениями, которые берутся из текстового поля. Когда пользователь введет данные в текстовые поля, они попадут в этот контейнер и будут переданы второй активности.

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

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

В нашем случае мы знаем, что ждём строковое значение, поэтому код можно переписать так:

Или так:

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

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