Главная » Разработка для Android » МЕНЕДЖЕР ФРАГМЕНТОВ – программирование Android

0

 

Как было указано выше, фрагменты можно создавать из программного кода, а также в макетах. Программное управление фрагментами осуществляется при помощи экземпляра класса FragmentManager, получаемого от Activity посредством метода getFragmentManager. Менеджер фрагментов обрабатывает три важные группы операций: тегирование и нахождение фрагмента, выполнение транзакций и работу со стеком переходов назад. Дополним нашу экспериментальную программу всеми этими компонентами и по очереди их исследуем.

Чтобы адаптировать приложение-пример к использованию фрагментов, создаваемых при помощи программирования, требуется внести всего два изменения: одно в макете main. xml, а другое – в активности Simpl eFragment. В макете элемент-фрагмент заменяется практически идентичным FrameLayout:

SimpleFragment по-прежнему будет использовать этот макет, как и ранее. Но теперь макет не будет автоматически создавать новый фрагмент. Эта операция будет происходить в следующем коде:

Эти изменения не добавляют в приложение никаких новых функций. При запуске эта версия приложения работает так же, как и наша первая версия, построенная на основе макетов.

Важной особенностью данного фрагмента кода является использование тегов. Вполне возможна ситуация, в которой метод onCreate, относящийся к активности, будет вызываться, будучи по-прежнему связанным с фрагментом, который был создан ранее. Если просто добавлять новый фрагмент при каждом вызове onCreate, то произойдет своеобразная утечка фрагментов. Чтобы избежать этого, используются функции тегирования и нахождения, предоставляемые менеджером фрагментов.

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

Тегирование и нахождение также могут использоваться и в других целях. Когда активности требуется сообщить о каких-нибудь изменениях состояния прикрепленного фрагмента, для этого активность обычно заранее тегирует этот фрагмент, а потом, когда он потребуется, использует FragmentManager для поиска тега и получения ссылки на него.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии