Курс

"Мобильная разработка"

Создание нескольких активностей

Класс Intent

Intent

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

объявления о желании (необходимости) запуска какой-либо активности или сервиса для выполнения определенных действий

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

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

явного запуска указанного сервиса или активности

При использовании Intent указываются:

контекст, предоставляющий нужную информацию об окружающей среде приложения

класс целевого компонента (будь то сервис, активность), который нужно будет запустить

 

Рассмотрим два варианта работы

Переход из одного Activity в другой Activity

Открытие и передача каких-либо данных в открываемую Activity

Для перехода из одной активности в другую нужно выполнить метод startActivity, передав ему в качестве входного параметра намерение:

i = new Intent(MainActivity.this, MainActivity2.class);

startActivity(i);

Где i — переменная Intent — представляет собой намерение. Конструктор Intent() принимает два аргумента:

первый типа Context — текущий контекст, например, текущая активность

класс вызываемой сущности, например, класс активности, которую мы хотим запустить. Стоит обратить внимание на то, как в системе определяется, что за компонент ему передан в качестве цели. В Android путеводителем для системы является файл AndroidManifest. При создании записи Activity в манифест-файле указывается имя класса. Если указать тот же класс в Intent, то система, просмотрев манифест-файл, обнаружит соответствие и покажет соответствующий Activity. Но если такого компонента не окажется в манифест-файле, или тип компонента не будет соответствовать совершаемому действию, система не сможет проделать нужные действия

 

Intent можно представить посылкой, которую Android доставляет от абонента A к абоненту B. Метод putextra получает в качестве параметров ключ, по которому значение можно извлечь, и само значение. Ключ имеет строковый тип, а значение может иметь либо примитивный тип, либо строковый тип, либо являться массивом, либо объектный тип, реализующий интерфейс Parcelable или Serializable

i = new Intent(MainActivity.this, ToInfActivity.class);

String eText = "information to send";

i.putExtra("et", eText);

startActivity(i);

В запущенной активности данные извлекаются, здесь ключ для извлечения — строка «et»:

String str = getIntent().getStringExtra("et");

Для остальных типов по аналогии: get<Тип>Extra. Также через намерения можно передавать и полноценные объекты собственных классов. Однако для такой возможности класс этого объекта должен реализовать интерфейс Serializable или Parcelable

Эта тема не содержит тестов или других форм контроля знаний

Понравился курс?

Подпишись на странице обсуждений и стань участником курса