Фрагменты и действия Android

ссылаясь на диаграмму ниже:

http://developer.android.com/guide/components/fragments.html

Может кто-нибудь объяснить, почему Google предлагает использовать 2 отдельных действия на телефоне и одно действие на планшете? Если у меня есть код в действии A для управления фрагментом B (для планшета), почему я должен повторять тот же код в действии B для телефона?

Кажется, что для телефона я все еще могу использовать 1 действие (только действие A) и заменять фрагменты, это может уменьшить избыточный код?

Спасибо.


person Golan Shay    schedule 08.11.2012    source источник


Ответы (3)


Я понимаю, что вы имеете в виду..

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

person Rejinderi    schedule 08.11.2012
comment
Вот что имелось в виду, а какие еще преимущества? Неправильно ли использовать одно действие и диспетчер фрагментов для обмена фрагментами на телефоне/одиночном макете? - person Golan Shay; 08.11.2012
comment
Я считаю, что это не так. Я не думаю, что будут какие-то преимущества, за исключением того, что вы можете сделать это в одном действии меньше, на самом деле, делая это в одном действии, оно также чище ... зависит от фактической реализации логики. - person Rejinderi; 08.11.2012
comment
Это именно то, о чем я думал, это чище, меньше кода. Спасибо. - person Golan Shay; 08.11.2012

Причина, по сути, в том, что телефоны маленькие. Очень маленький. Крошечный, на самом деле.

Возьмем классический сценарий приложения электронной почты. Двумя фрагментами в этом сценарии будут список сообщений (фрагмент A) и содержимое сообщения (фрагмент B). На планшете, где у вас есть место, вы можете удобно объединить их в одно действие одновременно на экране. Однако на телефоне вам необходимо тщательно управлять своим экранным пространством, поэтому вы должны разделить их на фазу выбора сообщения (действие A, показывающее фрагмент A) и фазу чтения сообщения (действие B, показывающее фрагмент B). ).

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

person Avner Shahar-Kashtan    schedule 08.11.2012
comment
Не то, что я спросил. Я понимаю фрагменты и действия, но почему бы мне не использовать одно действие с FragmentManager для обмена фрагментами на телефоне, а вместо этого Google предлагает реализовать другое действие B? - person Golan Shay; 08.11.2012
comment
Ага, понятно. Тогда вы замените избыточную логику Activity на ненужную логику управления фрагментами, не так ли? Я не знаю, что лучше. Логически действия «выбрать и прочитать» отличаются от действий «выбрать и прочитать», не так ли? Вы можете заменить любую навигацию между действиями переключением фрагментов в действии, но зачем вам это? - person Avner Shahar-Kashtan; 08.11.2012

Решение Rejinderi должно работать. Я думаю, что либо эта реализация, либо та, что из примера Google, может быть разумным выбором. Это зависит от того, чего вы пытаетесь достичь.

Лично я предпочитаю пример Google по следующим причинам:

  1. Отдельные действия означают, что вы используете задний стек действий. В некоторых (большинстве?) случаях задний стек фрагмента в порядке, но переход по умолчанию отличается. Вы можете предпочесть один другому по причинам UX.
  2. Если вы хотите зафиксировать намерение, может быть непонятно, почему ActivityA захватывает JobB.
  3. По моему опыту, логика обработки FragmentB без FragmentA (немного) отличается, и разбиение ее на собственную активность помогает отделить эту логику и делает все более читаемым.
  4. Пункты меню также могут измениться. Опять же, я нахожу разделение логики более четким.
person CoatedMoose    schedule 08.12.2013