Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Fragment

В студии компонент Fragment находится в разделе Containers (раньше в Layouts), что позволяет рассматривать его как контейнер. В то же время фрагмент обладает функциональностью активности (жизненный цикл, схожие методы и т.д.).

Сами фрагменты появились в API 11, но в целях совместимости была написана специальная библиотека Android Support library для старых устройств, которая по умолчанию готова к использованию в новых проектах. Позже появилась отдельная библиотека из AndroidX, которую и следует использовать в своих проектах.

Базовый пример с фрагментом

Рассмотрим простейший пример с использованием фрагмента, чтобы понять основные принципы работы. Пример писался давно, сейчас некоторые классы изменились, но суть осталась прежней.

Сначала нам нужно создать класс фрагмента. Воспользуемся услугами студии и создадим фрагмент при помощи мастера File | New | Fragment | Fragment (Blank). В диалоговом окне оставляем всё без изменений.

Будем создавать большой и страшный код для класса.

Оставим пока в покое этот класс и создадим макет. В палитре инструментов выберите раздел Layouts и перетащите на вашу заготовку экрана элемент Fragment.

Среда разработки предложит вам выбрать из списка готовый класс, который наследуется от класса Fragment или его потомков. Среди них будет созданный нами только что класс BlankFragment.

New Fragment

Код в классе фрагмента содержит интерфейс, который необходимо реализовать в активности, иначе мы получим ошибку.


package ru.alexanderklimov.fragmentdemo;

import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity
        implements BlankFragment.OnFragmentInteractionListener {

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

    @Override
    public void onFragmentInteraction(Uri uri) {
    }
}

Запустим код и увидим, что внутри активности есть фрагмент (текст "Hello blank fragment").

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

Дополнительные материалы

Теория о фрагментах

Жизненный цикл фрагментов

Используем фрагмент. Часть первая

Fragment (Фрагменты). Часть вторая

Fragment (Фрагменты). Часть третья

Fragment (Фрагменты). Часть четвёртая

Fragment (Фрагменты). Часть пятая

Fragment (Фрагменты). Часть шестая. Удержание состояния фрагмента

Jetpack.Fragment

Программное добавление фрагментов

Замещение фрагментов

Доступ к View внутри динамического фрагмента из активности

Анимация фрагментов

Создание контекстного меню внутри фрагмента

Помещаем WebView в фрагмент

Шаблон MasterDetailFlow

Создание фрагментов в Android Studio

DesarrolloAntonio/FragmentTransactionExtended - библиотека анимаций между фрагментами.

Реклама