Шаблоны, когда использовать переход деятельности против динамических фрагментов - PullRequest
16 голосов
/ 11 октября 2011

Существуют ли какие-либо шаблоны для обработки переходов пользовательского интерфейса в действиях Android против фрагментов? В настоящее время я смотрю на пользовательский интерфейс, который имеет не более 3 столбцов в альбомной. Я хотел бы, чтобы пользовательский интерфейс начинался с 1 столбца по всему экрану, а затем при выборе чего-либо перемещался во второй столбец, а затем при щелчке чего-либо во втором переходе в третьем на планшетах и ​​телефонах и исчезал в первом столбце на телефонах. Мне интересно, когда я должен сделать это как переход «Активность», а когда мне просто нужно использовать «Фрагменты с отображаемыми представлениями». Насколько я прочитал, фрагменты могут быть перенесены в другие действия, поэтому я выбираю либо реализовать действия со статическими макетами столбцов, которые затем переходят, принимая фрагменты с ними, либо иметь одно действие со всеми 3 столбцами и иметь действие, управляющее появлением Фрагменты. Оба подхода могли работать, но меня интересовали плюсы и минусы с обеих сторон обоих решений.

Есть два вопроса, похожих на то, что я задаю, но не совсем отвечаю на мой

Ответы [ 3 ]

12 голосов
/ 20 октября 2011

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

У нас есть пример кода под названием «Сотовая галерея», который вы можете посмотреть на здесь , который имеет макет с двумя столбцами плюс панель действий и возможность показать / скрытькрайний левый столбец.Это должно дать вам хороший старт для выяснения того, как сделать макет для нескольких фрагментов и показать / скрыть их.

К вашему сведению, одним из важных компромиссов в использовании нескольких фрагментов в действии вместо нескольких действий являетсячто фрагменты не реагируют непосредственно на намерения - например, если у вас было приложение для создания заметок, где страница «Просмотр заметки» была Activity, и вы изменили ее так, чтобы внутри основной Activity был фрагмент «view note»,тогда вам нужно настроить его так, чтобы основное действие получало идентификатор заметки и действие заметки (создание, просмотр, редактирование, что угодно) в намерении, а не просто действие «просмотр заметки» получало идентификатор заметкив намерении.В этом случае основная деятельность должна будет соответствующим образом настроить фрагменты на странице.Не такая уж большая проблема, но если важен внешний доступ к различным частям вашего приложения через Intent, то может быть проще разбить ваше приложение на несколько видов деятельности, а также использовать фрагменты для представления отдельных компонентов.

1 голос
/ 20 октября 2011

Использовать действия для полного экрана

Использовать фрагменты для части экрана или без экрана (но не для службы)

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

Основное приложение, в котором все это находится, - это приложение, а вкладки - это просто представление, которое вызывает диспетчер фрагментов.

Тем не менее, я использую Действия для сложных пользовательских действий глубже в приложении.Например, если кто-то воспроизводит видео, просматривает страницу сведений об элементе и разделы фотогалереи / слайд-шоу, поскольку все они являются полноэкранными компонентами.

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

Итак, у меня есть Activity -> фрагменты домов -> запускать полноэкранные операции для специальных команд.

1 голос
/ 20 октября 2011

На основе страницы API фрагментов Android 3.0 , действие является автономным, в то время как фрагмент может быть представлен как мини-действие, которое должно быть размещено в реальном действии.

Далее говорится, что введение Fragment API дало разработчикам Android возможность решить многие болевые точки, с которыми столкнулись разработчики Activity, поэтому в Android 3.0 утилита Fragment выходит далеко за рамки простого регулирования дляразные экраны:

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

Тем не менее, внедрение Фрагментов было решено для решения реальных проблем.Исходя из этого, я бы порекомендовал вам написать код «Proof of Concept» и оценить результаты.В настоящее время это может быть единственным тестом в реальном мире, который будет иметь значение

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