Как говорится в документации Android: «Активность — это отдельная, сфокусированная вещь, которую может делать пользователь».
Однако с помощью фрагментов мы сможем делать многие «вещи» в рамках той же активности, что и Рето Мейер предлагает. Его предложение состоит в том, чтобы заменить фрагмент выбора фрагментом содержимого в той же деятельности (раздел «В нашем коде это создает дилемму»).
Допустим, мое приложение «немного» сложнее, со многими действиями, сложным деревом навигации и разработано с учетом принципа «одна, сфокусированная вещь, которую может сделать пользователь».
Допустим, теперь мне нужно адаптировать его к фрагментам и большим экранам... и что я не хочу создавать второе приложение, а также иметь две совершенно разные логики (одна для телефонов, другая для таблиц) внутри одного приложения.
Должен ли я иметь одно действие для управления всеми фрагментами приложения и транзакциями фрагментов? Как Retro Meier предлагает выше. Это рекомендуемый путь? Таким образом, нарушается принцип «одной, сфокусированной вещи, которую может сделать пользователь» для действий?
Или я что-то упускаю? Надеюсь ;)
Кстати, я думаю, что фрагменты выглядят великолепно, но из того, что я видел до сих пор, только если вы создаете приложение с нуля. Потому что создание приложений, совместимых с телефоном и планшетом, выглядит немного утомительно. Надеюсь ошибиться :)
Дианна Хакборн уже ответила (спасибо за ссылка мгв):
вы можете поместить все свое приложение в одно действие, в котором вы изменяете структуру фрагмента по мере изменения его состояния.
Таким образом, Activity становится своего рода контейнером, куда вы сможете подключать фрагменты. Мне нравится подход, но... в моем приложении доступно около 30 различных операций, каждая из которых требует выполнения от 2 до 4 шагов экрана (формы и списки выбора), все они различаются, а также существуют ограничения навигации. Он отлично работает с действиями, каждое из которых обрабатывает одно поведение экрана/шага.
Итак, чтобы перенести на фрагменты, я должен переместить каждую логику экрана во фрагменты и использовать действия в качестве контейнеров для каждой операции. Таким образом, оставив Activity управлять навигацией между фрагментами для каждой операции, верно? Похоже, будет сложно адаптировать длинные приложения. :(
Кстати, определение текущего действия должно немного измениться. :)