Как фрагменты влияют на принцип действия «единая целенаправленная вещь, которую может сделать пользователь»? - PullRequest
11 голосов
/ 19 апреля 2011

Как говорится в документации Android: «Деятельность - это отдельная, сфокусированная вещь, которую может делать пользователь».

Однако с Фрагментами мы сможем сделать много "вещей" в рамках той же Деятельности, что и Рето Мейер предлагает . Его предложение состоит в том, чтобы заменить фрагмент выбора фрагментом содержимого в том же действии (раздел «В нашем коде это порождает дилемму»).

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

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

Должен ли я иметь одно действие для управления всеми фрагментами приложения и транзакциями фрагментов? Как Ретро Мейер предложить выше. Это рекомендуемый путь? Таким образом, нарушая принцип «единой, ориентированной на то, что пользователь может сделать» для действий?

Или я что-то упустил? Я надеюсь;)

Кстати, я думаю, что фрагменты выглядят великолепно, но из того, что я видел до сих пор, только если вы создаете приложение с нуля. Потому что создание приложений, совместимых с телефоном и планшетом, выглядит немного утомительно. Надеюсь быть неправым:)


Дайан Хэкборн уже ответила (спасибо за ссылку mgv):

вы можете поместить все ваше приложение в одно действие, в котором вы изменяете структуру фрагмента по мере изменения его состояния

Итак, Activity становится своего рода контейнером, куда вы сможете подключать фрагменты. Мне нравится этот подход, но ... в моем приложении доступно около 30 различных операций, каждая из которых требует от 2 до 4 экранных шагов (формы и списки выбора), все они различаются, и существуют также ограничения навигации. Он отлично работает с Activity, каждый из которых обрабатывает одно поведение экрана / шага.

Итак, чтобы портировать на фрагменты, я должен переместить каждую логику экрана на фрагменты и использовать операции в качестве контейнеров для каждой операции. Таким образом, оставляя Деятельности как те, которые управляют навигацией между Фрагментами для каждой операции, верно? Похоже, будет тяжело адаптировать длинные приложения. (

Определение текущего действия должно немного измениться. :)

1 Ответ

6 голосов
/ 19 апреля 2011

Должен ли я иметь одно действие для управления всеми фрагментами приложения и транзакциями фрагментов?

На это невозможно ответить абстрактно.Тем не менее, большинство приложений будет иметь несколько действий, даже в мире, основанном на фрагментах.Частично это будет соответствовать меньшим размерам экрана, где он будет составлять один фрагмент на действие.Часть этого потребуется платформой (например, наследование от PreferenceActivity).И кое-что из этого будет сделано с помощью графического интерфейса.

Таким образом, нарушается принцип "единой, сфокусированной вещи, которую пользователь может сделать" для операций?

Эта частьдокументации было написано в 2008 году, возможно ранее.Если бы в то время существовали фрагменты, я полагаю, что в документации было бы указано, что фрагмент - это «отдельная, сфокусированная вещь, которую может сделать пользователь», а действия служат в качестве уровня оркестровки, определяя, какие фрагменты видны при каких обстоятельствах.

Документация не будет обновляться во всех местах для отражения фрагментов, и даже если это произойдет, это займет некоторое время.Как минимум, для баланса 2011 года вам нужно будет выполнить собственные переводы инструкций эпохи 2008 года, чтобы преобразовать их в пользовательские интерфейсы на основе фрагментов эпохи 2011 года.

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

Iпонятия не имею, что вы считаете "совершенно другой логикой".В приложении на основе фрагментов большая часть вашей бизнес-логики будет заключаться в самих фрагментах.Действия, опять же, служат уровнем оркестровки, определяя, какие фрагменты должны быть видимыми, и координируя обработку событий.Последнее станет немного сложнее, чем раньше, так как иногда нажатие на элемент в списке вызывает новый фрагмент, а иногда нажатие на элемент в списке запускает новое действие, в зависимости от размера экрана.

Или я что-то упускаю?

Если честно, вам не хватает достаточной конкретности в вашем вопросе, чтобы сделать его разумно ответственным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...