Android Фрагменты: Уроки программирования #11

Фрагменты в 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 динамически, улучшая пользовательский опыт.

Что будем искать? Например,программа