Но мой вопрос: если есть преимущества в использовании фрагментов - зачем использовать действия тогда?
Потому что у вас нет выбора. Деятельность является частью фонда Android. Например, вы не можете использовать значок запуска, например, фрагмент.
так какой смысл в добавлении setHasOptionsMenu() в классе Activity?
Во многих пользовательских интерфейсах будут элементы элементов действия, которые не имеют никакого отношения к какому-либо конкретному фрагменту: «Настройки», «Справка», «О» и т. Д. Они прекрасно подходят для определения активности.
Что я должен делать в действиях, а что - в фрагментах?
В конце дня вы можете делать все, что хотите, до тех пор, пока оно компилируется, работает и делает то, что вы надежно надеетесь. Вы можете грубо разделить подходы на три «школы мысли» вокруг фрагментов.
Простым является то, что «фрагменты являются злом и должны быть уничтожены». В качестве альтернативы приверженцы будут использовать что-то другое (например, «Поток и раствор» Квадрата).
Более сложным является «использование фрагментов, где они оказываются полезными». Определение «полезно», как красота, лежит в глазах смотрящего. Таким образом, вы будете видеть, как люди используют фрагменты для:
- мастера/подробно и аналогичных структур для лучшего использования больших размеров экрана, оставаясь адаптируется к меньшим экранам
- страниц в
ViewPager
DialogFragment
для работы с изменения конфигурации и диалоги
- т.д.
Ваше текущее положение является третьей школой мысли: «Фрагменты Über Alles».Разница между этим и сценарием «где его полезно» заключается в том, что вы применяете фрагменты даже в тех случаях, когда для них нет четко определенного использования. Например, HelpActivity
, единственный пользовательский интерфейс которого состоит из действительно большого WebView
, показывающего вашу документацию, не обязательно будет иметь преимущество в том, что WebView
будет управлять некоторым подклассом WebViewFragment
. «Где его полезные» люди пропускают фрагмент до тех пор, пока не возникнет какая-то явная необходимость (например, вы хотите, чтобы помощь была бок о бок с другим контентом в действии на больших экранах). Сторонники «Фрагменты Über Alles» использовали бы WebViewFragment
все время.
«Что я должен делать в действиях, а что - в фрагментах?» - Это вопрос, который каждый программист должен спросить каждый раз, когда они пишут приложение. Как вы видели, есть мнения относительно Фрагментов и против них, поэтому ответы, как правило, основаны на мнениях. Классические примеры того, где вы будете использовать фрагменты, будут в системах меню, в ViewPagers и т. Д. Некоторые преимущества заключаются в том, что они все связаны с хостинговой деятельностью, но имеют собственные независимые жизненные циклы. Лично относитесь к каждому случаю индивидуально, не попадайте в категорию «For/Against» - используйте их, когда это имеет смысл. –