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

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

Примечание: если вы устанавливаете минимальный уровень API равным 11 и выше, вам не нужно использовать библиотеку поддержки, просто используйте класс Fragment. Но имейте ввиду, что в данном уроке мы сосредоточимся на использовании API библиотеки поддержки, в которой отличаются названия некоторых элементов.

Прежде чем приступить к уроку, подключите библиотеку поддержки к вашему проекту. Если вы еще не использовали библиотеку поддержки, используйте версию v4, следуя инструкции по установке. Однако, если вы уже используете панель инструментов в ваших приложениях, подключите библиотеку v7 appcompat, совместимую с Android 2.1.

Создание класса фрагмента

Для создания фрагмента, расширьте класс Fragment и переопределите основные методы жизненного цикла, примерно также как мы это делали с классом Activity

Единственное отличие – при создании фрагмента необходимо использовать метод onCreateView() для описания разметки. В действительности это единственный метод, который нужен, чтобы фрагмент можно было запустить. Вот пример фрагмента, в котором формируется его собственный макет:

Также как это происходит в явлениях, фрагмент должен содержать и другие функции обратного вызова, чтобы можно было управлять его состоянием при добавлении или удалении из явлений, а так же при изменении состояния явлений. Например при вызове метода явления onPause(), все фрагменты внутри явления также получают вызов onPause().

Подробная информация о жизненном цикле и методах обратного выхова фрагмента, находится в разделе Фрагменты руководства по API.

Добавление фрагмента в XML разметку явлений

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

Примечание: FragmentActivity это класс, предоставляемый библиотекой поддержки для работы в версиях API старше 11. В новых версиях API используйте класс Activity.

Ниже приведен пример разметки с двумя фрагмента для больших экранов (обратите внимание на спецификатор large в названии директории):

res/layout-large/news_articles.xml

Совет:о создании разметки для разных размеров дисплеев, прочитайте урок Поддержка различных размеров экрана

А так можно применить разметку к явлению:

Если вы используете библиотеку v7 appcompat, явления должны наследоваться от класса ActionBarActivity, который является наследником FragmentActivity. Подробная информация в разделе Создание панели инструментов

Примечание: если вы добавляете фрагмент в XML файл разметки явления, вы не сможете удалить этот фрагмент во время выполнения. Если вы планируете переключать фрагменты во время взаимодействия с пользователем, необходимо добавлять фрагмент при первом запуске явления. Как это сделать, читайте в следующем уроке.

Добавить комментарий