2016-10-16 2 views
1

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

Есть отдельные «страницы» для ингредиентов, категорий и времени, и я создал действие для каждого. Сначала пользователь выбирает ингредиенты, затем, когда они нажимают «Далее», начинается действие категории, а затем еще раз, когда они нажимают «Далее», появляется действие времени подготовки. Затем, когда они нажимают «Поиск», у меня есть другое действие для результатов, и когда пользователь нажимает один из рецептов в результатах, начинается другое действие для отображения рецепта.

Так у меня есть следующие действия, где каждое действие начинает следующий в следующем порядке:

  • IngredientActivity
  • CategoryActivity
  • TimeActivity
  • ResultActivity
  • RecipeActivity

Я сделал некоторые чтения и выяснили, что я должен был использовать фрагменты. Мой план состоит в том, чтобы изменить мое приложение, чтобы он имел вкладку с тремя вкладками для ингредиентов, категорий и времени, с кнопкой «Поиск» внизу, которая отображается во всех трех фрагментах, что позволяет пользователю легко переключаться между вкладками и поиском с той вкладки, которую они просматривают в настоящее время. Что касается результатов и отображения рецептов, я собираюсь оставить их соответствующие действия такими, какие они есть. Кнопка «Поиск» запускает ResultActivity, и при нажатии на результат индивидуального поиска начинается RecipeActivity и отображается рецепт, на который пользователь нажал.

Кроме того, я планирую добавить функцию «поиск по названию рецепта». Пользователь сможет переключаться между этими двумя режимами поиска, используя кнопку меню на панели действий. Я предполагаю, что для каждого режима поиска потребуется отдельная операция, поэтому я планирую это сделать.

Является ли моя идея правильным способом? Или мне нужно всего лишь одно действие для всего приложения и сделать все остальное исключительно с фрагментами?

+1

IMO, я буду использовать фрагменты. Все ваши так называемые действия будут завышены под основным видом деятельности, возможно, говорят «MainActivity». Затем, используя ViewPager, вы можете разрешить пользователю перемещаться назад и пересылать фрагменты. Чтобы переместиться вперед, просто используйте FAB, и у вас есть кнопка «Вверх», которая обрабатывается в вашей «MainActivity» –

+0

@ZhiKai. Итак, у меня должно быть только одно действие и перемещение фрагментов с помощью кнопки вверх в FAB?Я не уверен, что полностью понимаю, что вы имеете в виду ... – user3501779

ответ

7

Для меня, все решения о деятельности или фрагмента связаны с (1) UX (2) Управляемость (3) стоимость связи через компоненты и т.д.

Позвольте мне представить некоторые решения на примерах.

  1. Должен ли экран запускаться снаружи (использовать намерение)?
    • Activity лучше, поскольку он может быть открыт непосредственно из того, что дает AndroidManifest.
  2. Нужен ли экран для просмотра страниц за страницей?
    • Fragment лучше, так как Fragment + ViewPager предоставляет гибкую пейджинговую функцию. Более того, некоторые Android-устройства или редакторы темы переопределяют эффекты открытия активности, поэтому анимация с чередованием страниц не работает, как ожидалось, если мы реализуем ее в режиме Activity-by-Activity.
  3. Выполняет ли экран выполнение камеры или фотографии с помощью StartActivity?
    • Activity лучше, так как OnActivityResult сложно управлять внутренними фрагментами, когда приложение восстанавливается из приложений камеры. По этой причине экран «написать сообщение» может быть хорошим примером того, что он является единственным действием.
  4. Должен ли экран работать независимо от включения/выключения экрана (Таймеры)?
    • Activity лучше, поскольку он может отображаться быстрее и легче без Activity-Fragment dancing.
  5. Есть ли у экрана вид иерархии мастер-детали?
    • Fragment лучше, потому что мы могли бы подготовить планшет планшета.
  6. Много ли занимает память?
    • Activity лучше, потому что мы можем сосредоточиться на активности, а не на использовании внутренних фрагментов памяти.
  7. Имеет ли экран вложенные фрагменты более чем на 3 глубины?
    • Fragment, неохотно. Связь между фрагментом нестабильна, а «Мост/танцы» активности-Фрагмента всегда является головной болью 12. Мы можем сделать сложность ниже, но Activity-inside-Fragment-inside-ViewPager-внутри-фрагмент -... трудно справиться с управляемостью.

Использования мультипликатора Fragment с одним Activity рекомендуется профессиональными разработчики Android, но мы могли бы решить, чтобы создать больше действий для облегчения управления и более быстрого понимания.

В вашем случае я хотел бы реализовать компоненты, как показано ниже.

  • MainActivity with Fragments: Ingredients, Categories, Recipe.
  • ResultActivity with Fragments: Поиск и его результаты - вид вид мастера-детали.
  • TimerActivity: Должно быть хорошо работать в одиночной деятельности.
  • RecipeActivity: Если каждый рецепт имеет свой собственный идентификатор и может использоваться как постоянная ссылка, ваше приложение может открывать непосредственно страницу рецептов RecipeActivity. И было бы лучше показать рецепт, даже если ваше приложение будет восстановлено из выключенного или переключено обратно из другой ситуации приложения.
+0

Благодарим вас за подробный ответ. TimeActivity - это не таймер, но это всего лишь страница, которая позволяет пользователю выбрать максимальное время подготовки, необходимое для рецептов, поэтому результаты поиска могут быть отфильтрованы в зависимости от времени, которое пользователь выбирает. Кроме того, почему вы думаете, что «страница», отображающая рецепты, не должна получать отдельную активность? – user3501779

+0

@ user3501779 // рецепт отлично подходит для Activity. Я просто решил «выбрать фрагмент, когда он не такой сложный». – Youngjae

+0

@ user3501779 // Я редактировал, чтобы отразить ваше мнение. Как вы знаете, ответа нет, просто _приемлемый в случае_ существует. – Youngjae

Смежные вопросы