Существует много дискуссий о том, следует ли использовать Activities
или Fragments
.
Например:
- To-Fragment-or-not-to-Fragment
- Одно действие и все остальные фрагменты
- Сколько действий против фрагментов
- Использовать активность или фрагмент в приложении для Android
Большинство обсуждений, которые я нашел, были выпущены до Android 4.2.
С Android 4.2 Google изобрел вложенные фрагменты.
Поэтому я больше не вижу причин использовать более одного Activity
.
На ранней стадии Fragments
они должны были использоваться в приложениях для поддержки планшетов и смартфонов в удобном для вас режиме одновременно.
Таким образом, например, у вас есть ListView
, который может открыть деталь View
при щелчке по элементу. На смартфоне мы заменим ListView
и покажем подробный View
. В то время как Таблетка вместо замены списка с подробным представлением может одновременно отображаться как Views
.
Теперь с вложенными Fragments
есть много других возможностей. Если вы хотите использовать один Activity
, вы можете сохранить общую информацию в Activity
, и каждый Fragment
получит к ней доступ.
Кроме того, Fragments
, у которых есть вложенный Fragments
, также может хранить информацию для своих детей Fragments
.
С Fragments
я могу легко повторно использовать Views
, я могу показать более одного Fragment
в то же время, и я могу легко сформировать диалог из Fragment
. Все это могло бы взять меня, возможно, не больше, чем просто действия с копией и вставкой.
Если я использую Activities
, вместо этого я серьезно должен многое изменить, чтобы это сделать.
Недавно я реализовал Приложение, где я легко мог использовать два Fragment-ViewPager
, чтобы сделать вещи действительно красивыми и динамичными (некоторая информация: сегодня информация - вчерашняя информация).
По-моему, Fragments
облегчит нам жизнь:)
Вопросы:
- Почему я должен использовать более одного
Activity
?
Не могли бы вы привести хороший пример, в котором использование нескольких Activities
имеет смысл вместо использования Fragments
?
- Есть ли хорошие примеры, когда у вас нет выбора, кроме как использовать
Activities
?
Я думаю, что большинство более крупных фреймворков, таких как Карты, YouTube и co уже поддерживают Fragments
. Поэтому нам не нужно полагаться на Activities
.
Также довольно легко иметь дело с NavigationBar
, TabHosts
, ViewPager
, ActionBar
, если вы используете Fragments
.
От Udacity:
Почему бы не создать одно действие с большим количеством фрагментов?
- Повышенная сложность
- Управление более сложными намерениями
- Трудно читать, поддерживать и тестировать
- Опасность тесной связи
- Вопросы безопасности