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