Fragments
В Android 3.0 реализованы классы Fragment (фрагменты). Они обеспечивают поддержку более гибких схем размещения элементов на экранах различных размеров на телефонах и планшетах. В этой статье рассматривается разработка приложений Xamarin.Android с использованием фрагментов, а также поддержка фрагментов на устройствах с версией Android ниже 3.0 (API уровня 11).
Общие сведения о фрагментах
Крупные размеры экрана на большинстве планшетов создают дополнительный уровень сложности при разработке приложений Android: макет, предназначенный для небольших экранов, не обязательно будет работать на экранах большего размера, и наоборот. Чтобы сократить количество связанных с этим сложностей, в Android 3.0 были реализованы две новые возможности: фрагменты и пакеты поддержки.
Фрагменты можно считать модулями пользовательского интерфейса. Они позволяют разработчику разделить пользовательский интерфейс на удобные для многократного использования изолированные части, которые могут выполняться в отдельных действиях. Во время выполнения действия сами выбирают, какие фрагменты будут использоваться.
Пакеты поддержки, которые сначала назывались библиотеками совместимости, обеспечивают использование фрагментов на устройствах с версиями Android ниже 3.0 (API уровня 11).
Например, на рисунке ниже показано, как фрагменты используются в одном приложении на устройствах различных форм-факторов.
Фрагмент A содержит список, а фрагмент B — подробные сведения об элементе, выбранном из этого списка. Когда приложение запускается на планшете, оба фрагмента могут отображаться в одном действии. Если это же приложение запускается на телефоне (с экраном меньшего размера), фрагменты размещаются в двух отдельных действиях. Фрагменты A и B одинаковы для обоих форм-факторов, а действия, в которых они размещаются, различаются.
Чтобы упростить для действий координацию всех этих фрагментов и управление ими, в Android реализован новый класс FragmentManager. В каждом действии есть отдельный экземпляр FragmentManager
для добавления, удаления и поиска размещенных фрагментов. На следующей схеме показана связь между фрагментами и действиями.
В некотором смысле фрагменты можно рассматривать как составные элементы управления или как мини-действия. Они группируют элементы пользовательского интерфейса в многократно используемые модули, которые затем могут по отдельности использоваться разработчиками в действиях. У фрагментов, как и у действий, есть иерархия представлений, но, в отличие от действий, их можно совместно использовать на разных экранах. Представления отличаются от фрагментов тем, что у фрагментов есть определенный жизненный цикл, а у представлений его нет.
Хотя в действии размещаются один или несколько фрагментов, в нем не учитываются сведения непосредственно о самих фрагментах. Точно так же и фрагменты "не знают" непосредственно о других фрагментах в действии, где они размещены. Однако фрагменты и действия осведомлены о FragmentManager
в соответствующем действии. С помощью FragmentManager
для действия или фрагмента можно получить ссылку на конкретный экземпляр фрагмента, а затем вызвать методы для этого экземпляра. Таким образом действия или фрагменты могут взаимодействовать с другими фрагментами.
Руководство по фрагментам содержит исчерпывающее описание их использования, в том числе сведения по следующим темам:
- Создание фрагментов — создание базового фрагмента и ключевых методов, которые необходимо реализовать.
- Управление фрагментами и транзакции с ними — управление фрагментами во время выполнения.
- Пакет поддержки Android — использование библиотек, позволяющих использовать фрагменты в предыдущих версиях Android.
Требования
Фрагменты доступны в пакете SDK для Android начиная с API уровня 11 (Android 3.0), как показано на следующем снимке экрана:
Фрагменты доступны в Xamarin.Android 4.0 и более поздних версиях. Для использования фрагментов приложение Xamarin.Android должно быть разработано по меньшей мере для уровня API 11 (Android 3.0) или выше. Целевую платформу можно задать в свойствах проекта, как показано на снимке экрана ниже.
Фрагменты можно использовать в более ранних версиях Android с помощью пакета поддержки Android и Xamarin.Android 4.2 или более поздней версии. Сведения о том, как это сделать, подробно описаны в документах, указанных в этом разделе.