Я пытаюсь понять, как использовать фрагменты для создания приложений, которые хорошо адаптируются к нескольким экранам и макетам. Я изучил несколько примеров:
Все они поддерживают множественный Activity
подход:
Activity
с несколькими Fragment
sFragment
s среди нескольких Activity
с.Я подумал о другом подходе -одиночный Activity
один:
Activity
со всеми Fragment
s в нем.Fragment
(s)(с помощью FragmentTransaction.show()
/FragmentTransaction.hide()
).Чтобы проиллюстрировать тот же пример «Список новостных статей/содержимое статьи», который используется в руководстве для разработчиков Android,:
News
, содержащее как ArticleListFragment
, так и ArticleReaderFragment
.ArticleReaderFragment
изначально скрыт. Когда статья выбрана из списка, ArticleListFragment
скрывается, а отображается ArticleReaderFragment
.Кто-нибудь использовал подобный подход? Есть ли какие-либо практические недостатки этого метода? Кажется ли это лучше/хуже по сравнению с методом множественной активности -? Например, в XML нельзя показывать/скрывать фрагменты -, для этого нужно использовать FragmentTransaction
.
Представьте себе приложение, которое может одновременно отображать на экране до трех «панелей». Дальше,это факторы, которые следует учитывать:
Для простоты давайте не будем обсуждать экраны телевизоров.
Теперь перейдем к дизайну:
До сих пор мы не рассматривали ничего существенно отличающегося от примера News Reader, представленного в руководстве для разработчиков Android. Единственным существенным отличием является наличие трех фрагментов вместо двух.
Теперь дело за 7 -дюймовыми выступами, которые могут вместить только 2 фрагмента. Как это будет работать? Обратите внимание, что здесь возможны две комбинации:
Я просто не могу уложить это в голове. Делаю ли я все это в ActivityA? Мне просто создать совершенно новый ActivityD? Сколько макетов мне нужно создать (Я насчитал около 8 )? Не слишком ли много перестановок?
Я понимаю, что подход с одной -активностью, который я предложил выше, также может не подходить для этого сценария -, поскольку отображение/скрытие фрагментов само по себе -нетривиально.
Есть предложения, как справиться с этим, не перегружаясь макетами и комбинациями?