Как сделать переход между activity в android studio

Обновлено: 02.07.2024

Я учусь создавать приложения для Android и мне нужна конкретная помощь. Кажется, я не могу понять, какие биты кода шаблона я должен изменить, а какие биты статичны.

на планировка папка у меня ACTIVITY_MAIN.XML, который читает

Далее, у меня есть моя вторая деятельность ACTIVITY_SEND_PHOTOS.XML что это

у меня тогда есть мой MainActivity.java (это то .класс?) это читает пакет com.образец.одобрение.до н. э.;

а потом мой SendPhotos.java файл, который является;

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

Я знаю, что где-то мне нужно

но я понятия не имею, чем заменить ToActivity.класс или что еще мне нужно где.

Класс Acitvity является важнейшим компонентом Android-приложения, а способ запуска и компоновки является фундаментальной частью платформы Android. В отличие от парадигм программирования, где приложение запускается в методе main(), система Android инициирует код в экземпляре Activity, вызывая специальные коллбэки, которые соответствуют конкретным этапам жизненного цикла активности (подробнее о жизненном цикле активности будет сказано ниже).


Опыт использования мобильных приложений отличается от прочих тем, что взаимодействие пользователя с приложением не всегда начинается со стартового экрана. Например, если пользователь запустит приложение Gmail, он увидит список писем. Однако если он пользуется приложениями социальных сетей, которые могут запустить Gmail, то пользователь может попасть непосредственно на экран отправки письма.

Класс Activity предназначен для облегчения этой парадигмы. Когда одно приложение вызывает другое, вызывающее приложение запускает активность другого приложения, а не само приложение. Таким образом, активность служит точкой входа для взаимодействия приложения с пользователем.

Есть различные разновидности активностей, хотя все они так или иначе являются наследниками базового класса Activity. Например, если используется библиотека поддержки, то при создании нового проекта Android Studio генерирует класс MainActivity, который наследует от AppCompatAcitivty. Если посмотреть иерархию наследования, то в результате можно увидеть, что в начале этой иерархии будет находиться класс Activity.


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

Большинство приложений имеют несколько экранов, из чего можно сделать вывод, что они содержат несколько активностей. Как правило, одна из активностей определяется как главная и является первым экраном, появляющимся при запуске пользователем приложения. Затем каждая активность может запустить другую активность для выполнения каких-либо действий. На примере Gmail можно увидеть, что главной активностью является экран со списком писем. Из этой активности можно запустить активность, которая отвечает за создание и отправку новых писем, или любую другую.

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

Рассмотрим на примере, как добавить в приложение новую активность. Создадим в Android Studio новый пустой проект. По умолчанию, в приложении создаётся одна главная активность, называемая MainActivity. При этом в проекте происходят следующие действия.

Создаётся одноимённый класс MainActivity.java. В этом классе будет реализовываться вся работа активности, при создании в ней уже есть переопределённый метод onCreate() и загрузка разметки активности.

Как уже говорилось выше, метод setContentView() загружает разметку активности. Эта разметка берётся из XML-файла, который размещается в /res/layout. При создании проекта там уже находится сгенерированный файл activity_main.xml, идентификатор которого и передаётся в параметры setContentView(). Как правило, идентификатор идентичен названию файла. Если заглянуть в этот файл, то можно увидеть там TextView с надписью Hello World!, размещённое в центре экрана. Таким образом, то, что будет в коде этого файла, и увидит пользователь при запуске активности, для которой эта разметка установлена.

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

  • android.intent.action.MAIN — сообщает системе о том, что данная активность является главной.
  • android.intent.category.LAUNCHER — сообщает системе о том, что приложение должно показываться в списке приложений.

Вот всё, что нужно для того, чтобы создать активность. Подводя итог, можно сказать, что для создания активности Android Studio выполняет 3 шага:

Ничто не мешает разработчику выполнять эти шаги вручную, однако намного проще воспользоваться возможностями Android Studio, которая в разы ускоряет этот процесс. Допустим, нам понадобилось добавить в проект вторую активность. Для того, чтобы добавить новую активность нужно в контекстном меню выбрать New — Activity. В списке будет предложено выбрать несколько активностей с уже готовыми компонентами (например, активность с настройками). Чтобы создать активность без лишних компонентов, нужно выбрать Empty Activity.


Откроется окно, в котором будет предложено ввести название новой активности и название XML-файла разметки.


Жмём Finish и видим, что Android Studio добавила все необходимые файлы для активности.


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

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

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

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

Для навигации между этапами жизненного цикла активности класс Activity предоставляет базовый набор из шести коллбэков: onCreate(), onStart(), onResume(), onPause(), onStop() и onDestroy(). Система вызывает каждый из этих коллбэков как только активность переходит в новое состояние.


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

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

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

Во время деинициализации наоборот нужно выполнить всю работу и только потом вызвать суперкласс:

onCreate()

Этот метод обратного вызова срабатывает, когда система создаёт активность. Его наличие обязательно, поскольку здесь выполняется первоначальная настройка активности. В этом методе активность переходит в состояние Created. В методе onCreate() нужно выполнять основную логику запуска, которая должна выполниться только один раз. Например, реализация onCreate() может привязать данные к спискам, ассоциировать активность с ViewModel и создать экземпляры некоторых переменных. Этот метод принимает в качестве параметра savedInstanceState, который представляет собой объект Bundle, содержащий ранее сохраненное состояние активности. Если активность ранее не существовала, значение объекта Bunde будет равно null.

После того, как onCreate() завершит выполнение, активность переходит в состояние Started и система следом вызывает onStart() и onResume().

onStart()

Когда активность переходит в состояние Started, система вызывает этот метод. Вызов onStart() делает активность видимой для пользователя, так как приложение готовится к переходу активности на передний план и становится интерактивной. Например, здесь можно реализовывать код, который будет поддерживать пользовательский интерфейс.

Метод onStart() завершается очень быстро и, как и с onCreate(), активность не остаётся в состоянии Started, а переходит в состояние Resumed, после чего система вызывает метод onResume().

onResume()

Когда активность переходит в состояние Resumed, она выходит на передний план, а затем система вызывает метод onResume(). Это состояние, в котором приложение взаимодействует с пользователем. Приложение остается в этом состоянии, пока не произойдёт что-то, что переключит фокус с приложения. К таким событиям можно отнести, например, входящий вызов, переход пользователя на другую активность или выключение экрана устройства.

Когда происходит событие, прерывающее текущее состояние, активность переходит в состояние Paused и система вызывает метод onPause().

onPause()

Метод onPause() является первым признаком того, что пользователь покидает активность. Это не всегда означает, что активность уничтожается, она просто перестаёт находиться на переднем плане (хотя может оставаться видимой, если пользователь находится в многооконном режиме). Метод onPause() следует использовать для приостановки или регулирования операций, которые не должны продолжаться пока активность находится в состоянии Paused и ожидает возобновления. Существует несколько причин, по которым активность может войти в это состояние:

  • Некоторые события прерывают выполнение приложения, как описано в части про onResume(). Это самый распространенный случай.
  • В Android 7.0 (API 24) или выше несколько приложений могут работать в многооконном режиме. Поскольку только одно из приложений имеет фокус в момент времени, система приостанавливает работу всех других приложений.
  • Открывается новая полупрозрачная активность (например, диалог). Пока активность ещё частично видимо, но не в фокусе, она остаётся приостановленной.

Метод onPause() можно также использовать для освобождения системных ресурсов, регулирования сенсоров или любых других ресурсов, которые могут влиять на расход батареи, пока активность приостановлена. Однако, как уже говорилось, активность в состоянии Paused может быть ещё частично видимой, поэтому лучше всего использовать для освобождения ресурсов onStop() вместо onPause().

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

Завершение метода onPause() не означает, что активность выходит из состояния Paused. Скорее активность останется в этом состоянии до тех пор, пока не возобновится или не станет полностью невидимой для пользователя. Если активность возобновляется, система снова вызывает метод onResume(). Если активность возвращается из состояния Paused в состояние Resumed, система сохраняет экземпляр Activity в памяти, вызывает его в методе onResume(). В этом случае не нужно повторно инициализировать компоненты, созданные ранее. Если активность становится полностью невидимой, система вызывает метод onStop().

onStop()

Когда активность больше не видна пользователю, она переходит в состояние Stopped, и система вызывает метод onStop(). Это может произойти, например, когда вновь запущенная активность охватывает весь экран. Система также может вызвать onStop(), когда активность завершила свою работу и вот-вот будет уничтожена.

В методе onStop() приложение должно освобождаться или регулировать ресурсы, которые не нужны, пока приложение не отображается пользователю. Например, приложение может приостановить анимацию или переключиться с более детального на менее детальное обновление местоположения. Использование onStop() вместо onPause() гарантирует, что работа, связанная с UI, продолжится, даже если пользователь просматривает активность в многооконном режиме.

onStop() также следует использовать для выполнения относительно затратных в плане расхода CPU операций. Например, если не удается найти более подходящее время для сохранения информации в базе данных, это можно сделать в onStop().

Когда активность переходит в состояние Stopped, экземпляр Activity сохраняется в памяти: он содержит всю необходимую информацию, но не привязан к менеджеру окон. Поэтому при восстановлении не нужно заново инициализировать все компоненты. Система также отслеживает текущее состояние для каждого объекта View в разметке, поэтому, если пользователь вводит текст в виджет EditText, то этот контент сохранится и затем восстановится.

Примечание: Как только активность окажется остановленной, система может уничтожить процесс, который содержит активность, чтобы чтобы освободить память для своих нужд. Даже если система уничтожит процесс, она продолжает сохранять состояния объектов View (например, текст в EditText) в Bundle (парах «ключ-значение«) и восстанавливать их, когда пользователь возвращается в активность.

В состоянии Stopped активность либо возвращается для взаимодействия с пользователем, либо полностью завершается. Если активность возвращается, система вызывает onRestart(). Если активность завершается, система вызывает метод onDestroy().

onDestroy()

Метод onDestroy() вызывается до того, как активность будет уничтожена. Система вызывает этот метод по следующим причинам:

  • Активность завершает свою работу поскольку пользователь закрывает активность либо в приложении вызывается метод finish().
  • Система временно уничтожает активность из-за изменения конфигурации (например, поворот устройства или использование многооконного режима).

Если активность прекращает работу, то onDestroy() — это последний коллбэк жизненного цикла активности. Если onDestroy() вызывается в результате изменения конфигурации, система немедленно создаёт новый экземпляр активности и затем вызывает onCreate() в новом экземпляре.

Метод onDestroy() освобождает все ресурсы, которые ещё не были освобождены в методах ранее, такими как onStop().

Активность и её жизненный цикл : 4 комментария

Почему забыли про onSaveBundleInstanceState() ?

Потому что этот метод не является метод жизненного цикла

Спасибо. Из десяток статей эта лучшая (для новичка)

Реально куча сайтов перечитала и ваше объяснение самое понятное для новичков! Спасибо огромное! Наконец-то в программе все работает!

Рабочая среда Android Studio позволяет протестировать готовое приложение, для этого Вам необходимо создать виртуальное устройство. Для этого перейдите в AVD Manager.

Android Studio: Переключение между Activity

Назовём рабочую область BackActivity.

Android Studio: Переключение между Activity

Можно и в режиме дизайна, указать метод onClick:

Android Studio: Переключение между Activity

Сразу укажем кнопке ID (buttonBack).

Android Studio: Переключение между Activity

После, открываем MainActivity.java, и в метод Create добавляем строку:

Button buttonBack = (Button)findViewById(R.id.buttonBack);

Android Studio: Переключение между Activity

Далее необходимо навести каретку на (Button), вызвать контекстное меню зажав клавиши Alt+Enter и выбрать импорт класса.

Android Studio: Переключение между Activity

Теперь, сразу после, добавим строку:

public class MainActivity extends AppCompatActivity

и заменить её на:

public class MainActivity extends AppCompatActivity implements View.OnClickListener

Android Studio: Переключение между Activity

Теперь добавляем следующие строки:

И импортируем класс Intent (в противном случае выдаст ошибку Cannot find symbol class Intent).

Android Studio: Переключение между Activity

Шалость удалась, у нас есть работающая кнопка, которая переносит нас на новую Activity. Наполнять Activity содержимым буду уже в следующих обзорах.

Создание анимаций переходов между Activity в Android

Начиная с Android 4.4 в арсенале разработчиков появился дополнительный инструмент для создания анимаций — Transitions Framework. Изначально он предназначался для создания анимаций изменения состояния приложения путём манипулирования несколькими View. С выходом Android 5.0 набор доступных для использования анимаций был расширен, чтобы соответствовать представленной тогда же концепции Material Design.

image

Рис. 1. Анимация перехода между Activity с общими элементами

Но никто не любит длинные вступления, поэтому сразу перейдём к рассказу о том, как создавались анимации данного типа в приложении iFunny. В качестве первого примера рассмотрим анимацию, показанную на рис. 2. Для её использования нам потребуется Android версии 5.0 и выше.

Рис. 2. Анимация перехода между Activity на экране аутентификации пользователя

Первым шагом к созданию подобного перехода является, как ни странно, выбор этого самого элемента и определение его местоположения в вёрстке обеих Activity. После этого в описание каждого View, отображающего выбранный элемент, нужно добавить атрибут android:transitionName, а также назначить им android:id, если таковой отсутствует.

В нашем случае это обычные ImageView следующего вида:

Здесь стоит отметить два важных момента. Во-первых, в обоих ImageView необходимо установить одинаковые transitionName, что логично. Во-вторых, коль скоро мы используем ImageView, то и содержимое у них должно быть одним и тем же, поскольку использование двух отличающихся ресурсов может привести к неожиданным последствиям (как минимум к морганию анимируемого View в начале и конце анимации).

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

Делается это следующим образом:

В приведённом листинге:

  • R.id.auth_logo — ImageView из первой Activity, используемый в анимации;
  • activity — первая Activity;
  • R.string.email_auth_transition — метка, ранее оставленная в вёрстке обоих ImageView;
  • SecondActivity.class — вторая Activity.

На третьем шаге необходимо описать анимацию перехода, т.е. указать путь, проходимый анимируемым View, и трансформацию самого View. Для этого создадим отдельный файл projectName/src/main/res/transitions/email_auth_transition.xml со следующим содержимым:

Немного теории. Тег transitionSet предназначен для описания сразу нескольких трансформаций, применяемых к анимируемому View. Параметр transitionOrdering отвечает за порядок применения этих трансформаций. В нашем случае они применяются одновременно. Существует несколько типов готовых трансформаций, представленных в Transitions Framework. С полным списком можно ознакомиться на этой странице. Мы же остановимся на двух конкретных: changeBounds и changeImageTransform.

Первая предназначена для трансформации размера View. Вторая работает только с ImageView и в связке с первой позволяет изменять не только размер, но и форму ImageView. Использовав данные трансформации, получаем на выходе анимацию изменения размера изображения, представленную на рис. 2. Если не указывать тип движения анимируемого View, то он будет двигаться по кратчайшему пути. Более интересный способ передвижения рассмотрим во втором примере.

Последним шагом создания анимации является её объявление в темах обеих Activity. Для этого отредактируем описание тем следующим образом (или создадим новые в папке projectName/src/main/res/values-v22/theme.xml):

  • android:windowActivityTransitions разрешает выполнение анимации перехода;
  • android:windowSharedElementEnterTransition указывает на файл с описанием анимации перехода от первой Activity ко второй;
  • android:windowSharedElementExitTransition указывает на файл с описанием анимации перехода при возвращении из второй Activity в первую.

Итак, для создания анимации перехода от Activity к Activity необходимо:

  1. Описать анимации (в нашем случае в xml-файле);
  2. Добавить эти анимации в xml-описание темы Activity;
  3. Пометить анимируемый общий элемент (View) в разметке;
  4. При запуске второй Activity указать в параметрах запуска, что для неё необходимо задействовать анимацию перехода.

Рис. 3. Анимация перехода из комментариев к профилю пользователя

В чём же сложность второго примера? В первом случае использовалось изображение из ресурсов самого приложения, а тут — картинка загружается из сети. К тому же для комментариев изображение аватара пользователя берётся в более низком разрешении, чем для профиля. Поэтому требуется не только дать второй Activity доступ к изображению, используемому в первой, но и по завершении анимации подгрузить требуемое изображение в более высоком качестве. Так и получается две проблемы.

Для решения первой можно было бы собственноручно закэшировать изображение на диск или же передать его адрес в параметре второй Activity. Однако решение данной проблемы переложили на используемую в приложении библиотеку для загрузки изображений — Glide. При загрузке изображения достаточно просто добавить параметр diskCacheStrategy(DiskCacheStrategy.SOURCE), и оно будет закэшировано самой библиотекой (актуально для Glide версии 3.x). Следовательно, при повторном обращении к данному ресурсу из второй Activity будет использоваться кэшированный файл, что поможет нам избежать моргания анимируемого ImageView.

Вторая проблема также решается достаточно просто. В то время как осуществляется анимация перехода, профиль пользователя вместе с аватаром в более высоком разрешении скачиваются из сети и ожидают её завершения. Как только выполняются оба условия (завершение анимации и завершение загрузки), аватар пользователя обновляется. Добиться такого поведения можно, если использовать специальный Listener, в котором реализованы колбэки, вызываемые при смене статуса анимации. Для этого во Fragment, который принадлежит второй Activity, зададим этот самый Listener:

Здесь происходит следующее:

  1. С помощью getSharedElementEnterTransition().addListener() задаётся Listener для анимации появления Activity;
  2. В методе setAvatar() производится попытка загрузки и установки аватара (который уже лежит в кэше).

В методе onProfileUpdated() мы обновляем содержимое профиля, в т.ч. и аватар.

Стоит отдельно упомянуть случай, когда общий элемент уходит за пределы экрана. Особенность его состоит в том, что, вопреки (а может, и согласно) логике, анимация перехода всё равно будет выполнена и будет смотреться достаточно забавно (рис. 4).

Рис. 4. Анимация возвращения из профиля в комментарии

Чтобы избежать подобного поведения, достаточно в момент ухода общего элемента за пределы экрана выставить ему видимость, отличную от View.VISIBLE.

В целом можно сказать, что Transitions Framework является простым и мощным инструментом для создания анимаций. Он не ограничивается только анимациями перехода между Activity — в статье был рассмотрен лишь частный случай его использования. Также стоит отметить, что помимо предоставляемых трансформаций имеется возможность создавать свои собственные, но это уже совсем другая история, достойная отдельного поста.

Android programmers blog

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

В интернете полно туториалов на эту тему, я не знаю в чем проблема и почему у некоторых не получается разобраться, но сегодня я постараюсь разъяснить элементарные вопросы по этому классу.

Сегодня я по порядку расскажу как делается каждый из этих типов интентов, быстро и кратко.

Переход с одной активности на другу

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

Сперва делаем леяут с разметкой.

Дальше пишем код в onCreate для простоты.

FirstActivity.java

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

AndroidManifest.xml

Ну вторая а вторая активность у нас пустая, после нажатия на кнопку вы просто перейдете на следующую активность. Для просмотра результата перехода создайте второй лейаут файл в котором добавьте текствью, и напишите что нибудь там. Самое главное что бы SecondActivity наследовался так же от Activity как и первый иначе вы увидите ошибку.

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

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

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

FirstActivity.java

Вот в этом месте мы добавляем putExtra который передает все что ваша душа пожелает, он принимает класс с константой в которую записываем что передавать, и сам текст\символ\цифру которую мы хотим передать.

А дальше во SecondActivity мы должны создать собственно эту статическую переменную в которую будем записывать, и принять Bundle который мы отправляем.

SecondActivity.java

Ну и теперь нам нужна разметка в которую будем рисовать текст:

Вызов программ через intent

Так же как я уже упоминал ранее при помощи этого класса можно открывать программы разного рода, разные браузеры которые установлены на телефоне\планшете или например приложения для социальных сетей или файловые менеджеры для нахождения файлов.

Это очень удобная штука, я ее использовал в некоторых своих программах, в версиях андроида выше 3 работает отлично, а почему то в 3 версии андроида оно бычит, радует только то что телефонов на третьем андроиде очень мало (:

В общем смотрим на все том же самом примере класса FirstActivity. Сейчас мы откроем список браузеров.

В классе FirstActivity заменим наш старый интент на вот такой:

FirstActivity.java

Тут у нас из комментариев понятно что происходит, но помимо константы ACTION_VIEW есть еще очень много других разных констант которые позволяют выполнять разные функций.

Открытие файлов и папок через intent

Например для открытия локального каталога внутри телефона вам нужно сделать вот такой интент:

В FirstActivity заменим старый интент на этот.

А дальше что бы полученный id использовать мы создаем метод onActivityResult() который по возвращению на активность примет файл который мы выбрали в файловом менеджере.

FirstActivity.java

Так же в андроиде есть куча других констант, их всех я описать не буду потому что их много, например вот несколько:

Сегодня мы рассмотрели только основные самые используемые виды intent’ов, спасибо за внимание.

В этом уроке я бы хотел вам показать как передавать данные с одного Activity на другое Activity.

Шаг 1

Создаем в нашей Intellij IDEA -> Android Application.

После создаем layout main.xml:

И так она будет выглядеть:


На этой Layout будут вводится данные и после нажатия на кнопку передаваться на другое окно.

И собственно создадим второй layout куда мы и будем передавать данные с формы.

Назовем её two.xml

И так она будет выглядеть после того как мы передадим туда данные.


Layout-ы мы закончили создавать переходим к Activity.

Шаг 2

Создадим теперь Activity для main.xml и назовем его MainActivity.java:

и для второго layout tow.xml создаем следующий Activity, назовем его NewActivity.java:

Шаг 3

Intent – этот класс позволяет открывать новое Activity, запускать сервис, передавать данные между Activity.

Теперь в MainActivity добавим следующий метод, который передаст значения с формы на другое Activity после клика по кнопке:

Читайте также: