2016-04-12 4 views
0

Я начинаю программировать на Android, и у меня проблемы с пониманием деятельности - принципа фрагмента. Насколько я понял, фрагменты - это что-то вроде «под-действий», и я могу добавить несколько фрагментов в один вид деятельности, но также могу иметь действие без каких-либо фрагментов. Ответы на вопрос «зачем использовать фрагменты вообще» можно найти по всей сети, также есть несколько вопросов переполнения стека в эту тему. Но мой вопрос: если есть преимущества в использовании фрагментов - зачем использовать действия? Если фрагменты «лучше», и я должен использовать их везде, где могу, тогда все мои классы активности будут пустыми, а фрагменты будут выводить контент на экран - это лучшая практика?Устранение неисправностей Фрагмент и активность

Если я хочу добавить меню, например, я могу поместить его только в фрагмент, так что в чем смысл добавления setHasOptionsMenu() в классе Activity?

Конкретно: Что я должен делать в действиях, а что - в фрагментах?

Надеюсь, вы понимаете мою проблему.

+2

«Что я должен делать в действиях, а что - в фрагментах?» - Это вопрос, который каждый программист должен спросить каждый раз, когда они пишут приложение. Как вы видели, есть мнения относительно Фрагментов и против них, поэтому ответы, как правило, основаны на мнениях. Классические примеры того, где вы будете использовать фрагменты, будут в системах меню, в ViewPagers и т. Д. Некоторые преимущества заключаются в том, что они все связаны с хостинговой деятельностью, но имеют собственные независимые жизненные циклы. Лично относитесь к каждому случаю индивидуально, не попадайте в категорию «For/Against» - используйте их, когда это имеет смысл. –

ответ

4

Но мой вопрос: если есть преимущества в использовании фрагментов - зачем использовать действия тогда?

Потому что у вас нет выбора. Деятельность является частью фонда Android. Например, вы не можете использовать значок запуска, например, фрагмент.

так какой смысл в добавлении setHasOptionsMenu() в классе Activity?

Во многих пользовательских интерфейсах будут элементы элементов действия, которые не имеют никакого отношения к какому-либо конкретному фрагменту: «Настройки», «Справка», «О» и т. Д. Они прекрасно подходят для определения активности.

Что я должен делать в действиях, а что - в фрагментах?

В конце дня вы можете делать все, что хотите, до тех пор, пока оно компилируется, работает и делает то, что вы надежно надеетесь. Вы можете грубо разделить подходы на три «школы мысли» вокруг фрагментов.

Простым является то, что «фрагменты являются злом и должны быть уничтожены». В качестве альтернативы приверженцы будут использовать что-то другое (например, «Поток и раствор» Квадрата).

Более сложным является «использование фрагментов, где они оказываются полезными». Определение «полезно», как красота, лежит в глазах смотрящего. Таким образом, вы будете видеть, как люди используют фрагменты для:

  • мастера/подробно и аналогичных структур для лучшего использования больших размеров экрана, оставаясь адаптируется к меньшим экранам
  • страниц в ViewPager
  • DialogFragment для работы с изменения конфигурации и диалоги
  • т.д.

Ваше текущее положение является третьей школой мысли: «Фрагменты Über Alles».Разница между этим и сценарием «где его полезно» заключается в том, что вы применяете фрагменты даже в тех случаях, когда для них нет четко определенного использования. Например, HelpActivity, единственный пользовательский интерфейс которого состоит из действительно большого WebView, показывающего вашу документацию, не обязательно будет иметь преимущество в том, что WebView будет управлять некоторым подклассом WebViewFragment. «Где его полезные» люди пропускают фрагмент до тех пор, пока не возникнет какая-то явная необходимость (например, вы хотите, чтобы помощь была бок о бок с другим контентом в действии на больших экранах). Сторонники «Фрагменты Über Alles» использовали бы WebViewFragment все время.

+0

спасибо! Это объяснение мне очень помогло :) –

Смежные вопросы