1. Создание Activity. Манифест приложения.

Разработаем небольшое приложение, которое состоит из двух Activity. Для этого нам необходимо научиться добавлять в проект еще одно окно приложения.

Несколько лет назад компания Google рекомендовала для навигации в приложении использовать один экземпляр Activity и экземпляры класса Fragment в нем для реализации операций управления представлениями. Для управления взаимодействиями между фрагментами и историей отображений предлагалось использовать новый компонент Navigation, выпущенный в пакете Jetpack.

Окно можно добавить с помощью мастера или вручную.

Добавление Activity с помощью мастера

Чтобы добавить Activity с помощью мастера выберите пункт New -> Activity, после чего выберите нужный тип Activity (выбрать пункт New можно нажав правой кнопкой мыши в папке проекта или из меню File).

Добавление Activity вручную

Для начала создадим класс еще одного Activity, назовем его SecondActivity.java.

Создадим новый java-класс, который наследуется от AppCompatActivity, после чего переопределим метод onCreate().

SecondActivity.java
public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

Создадим ресурс макета и назовем его activity_second.xml.

Имя файла макета принято выбирать созвучным названию класса контроллера, для которого этот макет создается. В нашем случае, для класса SecondActivity создается макет с названием activity_second. Для класса MainActivity был сгенерирован макет с именем activity_main.

Для создания файла макета, нажмите правой кнопкой мыши на директорию layout, после чего выберите New -> Layout Resource File, укажите имя файла и нажмите OK.

Вернемся в SecondActivity и в методе onCreate() добавим вызов метода setContentView() и передадим ему ссылку на ресурс макета activity_second.

SecondActivity.java
public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.activity_second);
    }
}

Чтобы закончить процесс создания второго окна приложения, нам необходимо поговорить о такой важной составляющей Android-приложения как файл манифеста.

Манифест приложения

Манифест приложения содержится в файле AndroidManifest.xml. Файл манифеста содержит важную информацию о приложении, которая требуется системе Android. Только получив эту информацию, система может выполнить какой-либо код приложения.

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

Подробная информация о манифесте приложения - здесь.

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

Откроем файл манифеста (он находится в директории manifests) и рассмотрим его структуру

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ua.opu.simpleproject">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SimpleProject">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Нас интересует элемент <application>, который описывает информацию о приложении и его отдельных компонентах.

Внутри элемента <application> должны быть объявлены основные компоненты приложения, в частности, все Activity приложения. Структура файла манифеста в нашем случае будет выглядеть так

AndroidManifest.xml
<manifest>
    ...
    <application>
        ...
        <activity>...</activity>
        <activity>...</activity>
        <activity>...</activity>
        <activity>...</activity>
        ...
     </application>
     ...
</manifest>

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

Файл манифеста будет выглядеть следующим образом

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ua.opu.simpleproject">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SimpleProject">
        
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <!-- Добавлено второе Activity -->
        <activity android:name=".SecondActivity" />
        
    </application>
</manifest>

Last updated