Фрагменты в Android Studio — компоненты пользовательского интерфейса, похожие на Activity, но с ключевыми отличиями. Activity наследуется от класса Activity, а фрагмент — от класса Fragment. Это делает их принципиально разными инструментами.
Что такое фрагмент?
Фрагмент позволяет встраивать части пользовательского интерфейса (UI) в существующую Activity. Представьте приложение с двумя кнопками: нажатие на первую добавляет на экран фрагмент с кнопками, прогресс-барами или картинками; нажатие на вторую — другой фрагмент с другим содержимым. Таким образом, вы не переходите на новые экраны (Activity), а динамически обновляете текущий экран, добавляя или заменяя фрагменты. Этот подход широко используется в Android-приложениях.
Практическое применение
Создадим простой проект. Заменим ConstraintLayout на LinearLayout в файле activity_main.xml, установив android_orientation="vertical". Это позволит выстраивать элементы UI друг под другом. Добавим две кнопки: «fragment One» и «fragment Two». Затем создадим два фрагмента: fragment_one и fragment_two (через New -> Fragment -> Fragment (Blank)). В файлах fragment_one.xml и fragment_two.xml удалим стандартный текст. Для визуального отличия добавим background с разными цветами: android_background="@android:color/holo_blue_light" для fragment_one.xml и android_background="@android:color/holo_red_light" для fragment_two.xml.
Встраивание фрагментов в Activity
В activity_main.xml под кнопками добавим контейнер для фрагментов:
<FrameLayout
android_id="@+id/frpl"
android_layout_width="match_parent"
android_layout_height="match_parent" />
Чтобы задать фрагмент по умолчанию, используем атрибут android:name внутри FrameLayout:
<FrameLayout
android_id="@+id/frpl"
android_layout_width="match_parent"
android_layout_height="match_parent"
android_name="com.example.your_package.FragmentOne" />
(Замените com.example.your_package на ваш пакет).
Программирование взаимодействия
В MainActivity.java создадим метод changeFragment(View view):
public void changeFragment(View view) {
Fragment fragment = null;
switch (view.getId()) {
case R.id.button:
fragment = new FragmentOne();
break;
case R.id.button2:
fragment = new FragmentTwo();
break;
}
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frpl, fragment);
ft.commit();
}
Не забудьте добавить необходимые импорты. Обратите внимание на использование getSupportFragmentManager() вместо getFragmentManager(). Инициализируем fragment как null и добавим обработчик onClick для кнопок, вызывая метод changeFragment().
Результат
После запуска приложения отобразится фрагмент по умолчанию (fragment_one). Нажатие на кнопки будет менять фрагменты, демонстрируя динамическое обновление UI. В фрагментах можно размещать любые элементы управления.
Фрагменты — мощный инструмент для создания гибких и удобных Android-приложений. Они позволяют управлять UI динамически, улучшая пользовательский опыт.