
В Android приложения состоят из нескольких activity, каждая из которых отвечает за отдельный экран. Правильная организация переходов между ними позволяет создать удобный интерфейс и поддерживать структуру проекта. Для запуска другого activity используется Intent, который связывает текущий экран с целевым.
Перед созданием перехода важно убедиться, что новое activity добавлено в AndroidManifest.xml. Без этого система не сможет его обнаружить, и попытка запуска завершится ошибкой. Каждое activity должно иметь уникальный имя класса и корректный layout, чтобы переходы работали стабильно.
Переход между activity можно реализовать с передачей данных через Intent extras. Это позволяет передавать строки, числа или объекты между экранами. Для возврата результата используется метод startActivityForResult и соответствующая обработка в onActivityResult.
Добавление анимации при переходе улучшает восприятие интерфейса. Android Studio поддерживает стандартные анимации для появления и исчезновения activity, а также позволяет создавать собственные эффекты. Настройка анимации выполняется через overridePendingTransition сразу после запуска нового activity.
Создание нового activity и подключение к проекту
Для добавления нового activity в Android Studio откройте папку app/src/main/java, щелкните правой кнопкой мыши на пакет приложения и выберите New → Activity → Empty Activity. В появившемся окне укажите имя класса, например SecondActivity, и убедитесь, что выбран правильный layout файл.
После создания activity Android Studio автоматически добавляет его в AndroidManifest.xml. Проверьте наличие строки <activity android:name=».SecondActivity» />, чтобы система могла распознавать новый экран при запуске.
Layout нового activity создается в папке res/layout с расширением .xml. В этом файле можно размещать элементы интерфейса, кнопки и поля ввода, которые будут взаимодействовать с пользователем. Убедитесь, что у layout указан уникальный id для каждого элемента, который требуется использовать в коде.
После подключения activity к проекту рекомендуется выполнить сборку Build → Make Project, чтобы убедиться в отсутствии ошибок компиляции. Только после этого можно переходить к настройке кнопок и запуску нового activity через Intent.
Настройка кнопки для запуска перехода
Для запуска перехода между activity необходимо добавить кнопку на layout текущего экрана и настроить её обработчик. Выполните следующие шаги:
- Откройте XML-файл layout текущего activity, например activity_main.xml.
- Добавьте элемент <Button> с уникальным id и текстом, например:
<Button android:id="@+id/buttonNext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Перейти" />
- В классе activity, например MainActivity, найдите кнопку через метод findViewById:
Button buttonNext = findViewById(R.id.buttonNext);
- Установите OnClickListener, чтобы обработать нажатие и инициировать переход:
buttonNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } });
После этих действий кнопка будет запускать новый activity при нажатии. Можно добавлять дополнительные проверки или передавать данные через Intent extras прямо внутри OnClickListener.
Использование Intent для перехода между activity

Для запуска другого activity в Android используется объект Intent. Он связывает текущий экран с целевым и может передавать данные между ними.
Создание явного Intent выполняется следующим образом:
- В классе текущего activity импортируйте пакет android.content.Intent.
- Создайте новый Intent, указав текущий и целевой activity:
Intent intent = new Intent(CurrentActivity.this, TargetActivity.class);
- Запустите целевой экран методом startActivity:
startActivity(intent);
Явные Intent используются, когда имя класса целевого activity известно. Для передачи данных добавляются extras:
intent.putExtra("key", "value");
В целевом activity данные извлекаются через метод getIntent().getStringExtra(«key»). Это позволяет передавать текст, числа и объекты, реализующие интерфейс Parcelable или Serializable.
Передача данных между activity через Intent

Для передачи информации между activity используется метод putExtra объекта Intent. Он позволяет добавлять значения различных типов: строки, числа, логические значения и объекты, реализующие Parcelable или Serializable.
Пример передачи строки и числа:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("username", "Ivan");
intent.putExtra("age", 25);
startActivity(intent);
В целевом activity данные извлекаются с помощью метода getIntent():
Intent intent = getIntent();
String username = intent.getStringExtra("username");
int age = intent.getIntExtra("age", 0);
При передаче объектов важно использовать Parcelable для оптимизации скорости и уменьшения нагрузки на память. Для Serializable можно создать класс с интерфейсом Serializable и передавать его через putExtra:
intent.putExtra("userObject", user);
Правильная настройка ключей при передачи данных обеспечивает стабильную работу переходов и предотвращает ошибки типа NullPointerException.
Обработка возвращаемого результата с startActivityForResult
Метод startActivityForResult позволяет запускать другое activity и получать от него данные после завершения. Для этого выполняются следующие шаги:
- Создайте Intent для целевого activity и вызовите его с уникальным кодом запроса:
Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivityForResult(intent, 100);
- В целевом activity сформируйте результат и передайте его обратно:
Intent returnIntent = new Intent(); returnIntent.putExtra("resultKey", "результат"); setResult(RESULT_OK, returnIntent); finish(); - В исходном activity переопределите метод onActivityResult для обработки возвращаемых данных:
| Параметр | Описание |
|---|---|
| requestCode | Код запроса, переданный в startActivityForResult для идентификации результата |
| resultCode | Код результата, обычно RESULT_OK или RESULT_CANCELED |
| data | Intent с возвращаемыми значениями, извлекаемыми через getExtras или getStringExtra |
Пример обработки результата:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100 && resultCode == RESULT_OK) {
String result = data.getStringExtra("resultKey");
// Использование результата
}
}
Добавление анимации при переходе между activity
Для улучшения визуального восприятия переходов между activity используется метод overridePendingTransition. Он позволяет задать анимацию появления и исчезновения экранов.
Шаги для добавления анимации:
- Создайте папку res/anim, если её нет, и добавьте XML-файлы с анимациями. Пример для слайда слева направо:
<translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="100%" android:toXDelta="0%" android:duration="300"/>
- Создайте обратную анимацию для закрытия activity:
<translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="0%" android:toXDelta="-100%" android:duration="300"/>
- После вызова startActivity добавьте метод overridePendingTransition:
startActivity(intent); overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
- Для возврата к предыдущему activity используйте те же анимации в методе finish():
finish(); overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
Применение анимации повышает плавность переходов и делает интерфейс более интерактивным. Можно комбинировать разные эффекты: масштабирование, прозрачность, вращение.
Вопрос-ответ:
Как создать новое activity в Android Studio и подключить его к проекту?
Для создания нового activity откройте пакет приложения в app/src/main/java, щёлкните правой кнопкой мыши и выберите New → Activity → Empty Activity. Укажите имя класса, например SecondActivity, и выберите layout. После создания activity Android Studio автоматически добавит его в AndroidManifest.xml. Проверьте наличие строки
Как настроить кнопку для перехода на другой экран?
Добавьте элемент в XML layout текущего activity с уникальным id. В классе activity найдите кнопку через findViewById и установите OnClickListener. Внутри обработчика создайте Intent с указанием текущего и целевого activity и вызовите startActivity(intent). Это позволит запускать другой экран по нажатию кнопки. При необходимости можно добавлять передачу данных через putExtra.
Каким образом использовать Intent для передачи данных между activity?
Intent позволяет передавать данные через метод putExtra. Например, можно отправить строку и число:
intent.putExtra("username", "Ivan"); intent.putExtra("age", 25);
В целевом activity извлеките данные с помощью getIntent().getStringExtra(«username») и getIntent().getIntExtra(«age», 0). Для передачи объектов используют интерфейсы Parcelable или Serializable, что обеспечивает корректную передачу сложных данных между экранами.
Как обрабатывать возвращаемый результат с помощью startActivityForResult?
Запустите целевое activity методом startActivityForResult(intent, requestCode), указав уникальный код запроса. В целевом activity сформируйте Intent с результатом, вызвав setResult(RESULT_OK, returnIntent) и finish(). В исходном activity переопределите onActivityResult, чтобы проверить requestCode и resultCode, а затем извлечь данные через data.getStringExtra(«ключ»). Такой подход позволяет получать обратную информацию от запущенного экрана и использовать её в логике приложения.
Как добавить анимацию при переходе между activity?
Создайте XML-файлы с анимациями в папке res/anim, например сдвиг слева направо или справа налево. После вызова startActivity(intent) добавьте overridePendingTransition(R.anim.slide_in, R.anim.slide_out) для задания анимации появления и исчезновения экранов. Для закрытия activity используйте аналогичную анимацию при вызове finish(). Это позволяет сделать переходы более плавными и визуально понятными.
Как правильно передавать сложные объекты между activity через Intent?
Для передачи сложных объектов между activity необходимо использовать интерфейсы Parcelable или Serializable. Parcelable обеспечивает более высокую скорость передачи и меньшее потребление памяти по сравнению с Serializable. Класс объекта должен реализовывать выбранный интерфейс, а все его поля должны быть также сериализуемыми. Для отправки используйте метод putExtra:
intent.putExtra("userObject", user);
В целевом activity объект извлекается через getIntent().getParcelableExtra(«userObject») или getSerializableExtra(«userObject»). Этот подход гарантирует корректное получение данных и предотвращает ошибки при доступе к полям объекта.
