Онлайн-пример не заполняет все пробелы.Я постараюсь ответить на ваши вопросы напрямую:
"В первом примере (тот, что с телефоном) вы должны создать действие с файлом xml, содержащим один файл, и действием, которое вызывает только setContentView () длячто XML и это все? "
Вы начали в правильном месте.Но это еще не все.В Android всегда есть несколько способов решения проблемы, но рекомендуется создать эффект динамического количества фрагментов, основанных на доступности.real-estate:
- Создание XML-файлов макета в / layout для основной (по умолчанию) целевой ориентации / устройства / форм-фактора / SDK
- Создание XML-файлов макета для самых маленьких-ширина базовой линии для других целевых устройств.Вы также можете указать другие ориентации, SDK и т. Д.
- Каждый XML-файл макета будет иметь собственный набор определенных фрагментов
- В действии проверьте, какие фрагменты присутствуют.
Очевидно, что аналогичная стратегия может быть принята для программных макетов.
В вашем примере в исходном вопросе (из документов Google) вы могли бы иметь:
- layout / main.xml :: этот макет будет иметь только Фрагмент 1
- layout-sw600dp / main.xml :: этот макет будет иметь Фрагменты 1, 2
Тогда в MainActivity.Ява вы бы проверить на наличие каждого фрагмента.Для этого вы можете использовать FragmentManager # findFragmentById () для проверки вроде: если findFragmentById () возвращает ноль для Fragment-2, тогда MainActivity знает, что устройство загрузило layout / main.xml и поддерживает только один фрагмент.
Отступление «назад» из примера в некоторой степени показывает, что: до использования фрагментов вы могли вызвать Activity B из Activity A с startAcitityForResult (int).В парадигме фрагмента вам, вероятно, нужен только результат, полученный в результате фрагмента 2, что-то должно произойти во фрагменте 1, поэтому разумно, чтобы MainActivity был привратником для этого.Развернув пример, вы можете увидеть, что в других приложениях MainActivity может потребоваться вызывать другие действия - по любой причине.Возможно, вы ориентируетесь на большой планшет с достаточным количеством недвижимости для 3 фрагментов, но на телефоне, который должен быть 3 активами.Вещи могут стать интересными, но Fragment API является довольно мощным.
"Вы можете установить Fragment в качестве Activity или Wrapper всегда требуется при использовании фрагментов?"
Fragment - это не Activity,Действительно, фрагменты загружаются операциями, так что да, можно сказать, что обертка всегда требуется.Вы затрагиваете другой тонкий аспект фрагментов.В то время как действия ведут себя как контроллеры MVC, фрагменты можно назвать «мини-контроллерами» из-за их жизненного цикла, который напоминает и выполняется вместе с действием.Опять же, жизненный цикл Фрагмента содержится внутри («обернутый») жизненного цикла Действия, управляющего Фрагментом.Я рекомендую ознакомиться с жизненным циклом фрагмента, задокументированным в http://developer.android.com/guide/topics/fundamentals/fragments.html#Lifecycle.