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