Вступ до Intent. Запуск Activity
Для взаємодії між різними об'єктами activity ключовим класом є android.content.Intent. Він представляє собою задачу, яку потрібно виконати додатку.
Для роботи з Intent додамо новий клас Activity. Для цього натискаємо правою кнопкою миші на папку, в якій знаходиться клас MainActivity, і потім у контекстному меню вибираємо New -> Activity -> Empty Views Activity:

Новий клас Activity назвемо SecondActivity, а всі інші налаштування залишимо за замовчуванням:

І після цього в проєкт буде додано нову Activity - SecondActivity:

Після цього в файлі манифеста AndroidManifest.xml ми зможемо знайти наступні рядки:
<activity
android:name=".SecondActivity"
android:exported="false" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Усі використані класи activity повинні бути описані в файлі AndroidManifest.xml за допомогою елемента <activity>. Кожен такий елемент містить як мінімум один атрибут android:name, який встановлює ім'я класу activity.
Однак по суті activity — це стандартні класи Java, які наслідуються від класу Activity або його нащадків. Тому замість вбудованих шаблонів в Android Studio ми можемо додавати звичайні класи, а потім їх наслідувати від класу Activity. Однак у цьому випадку потрібно буде вручну додавати в файл манифеста дані про activity.
Причому для MainActivity в елементі intent-filter визначено інтент-фільтр. У ньому елемент action зі значенням "android.intent.action.MAIN" представляє головну точку входу в додаток. Тобто MainActivity залишається основною і запускається додатком за замовчуванням.
Для SecondActivity просто вказано, що вона є в проекті, і жодних intent-фільтрів для неї не задано.
Запуск SecondActivity з MainActivity
Щоб з MainActivity запустити SecondActivity, потрібно викликати метод startActivity():
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
Як параметр у метод startActivity передається об'єкт Intent. Для його створення в конструкторі Intent приймає два параметри: контекст виконання (в даному випадку це поточний об'єкт MainActivity) і клас, який використовується об'єктом Intent і представляє передавані в задачу дані (фактично клас activity, яку ми будемо запускати).
Визначення кнопки для переходу в інтерфейсі
Тепер розглянемо реалізацію переходу від однієї Activity до іншої. Для цього в файлі activity_main.xml (тобто в інтерфейсі для MainActivity) визначимо кнопку:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/navButton"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Перейти до SecondActivity"
android:onClick="onClick"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Обробник натискання в MainActivity
Тепер визначимо для кнопки в класі MainActivity обробник натискання, за яким буде здійснюватися перехід до нової Activity:
package com.example.viewapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
}
В обробнику натискання буде запускатися SecondActivity.
Код SecondActivity
Далі змінюємо код SecondActivity:
package com.example.viewapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_second);
TextView textView = new TextView(this);
textView.setTextSize(20);
textView.setPadding(16, 16, 16, 16);
textView.setText("SecondActivity");
setContentView(textView);
}
}
Запустимо додаток і перейдемо від однієї Activity до іншої:
