Вступление:
Базовый шаблон "Fragments Tutorial" выглядит примерно так:
- На планшете есть список слева, подробности справа.
- Оба они
Fragments
находятся в одном и том же местеActivity
. - На телефоне есть список
Fragment
в одномActivity
. - Запустите новый
Activity
с деталямиFragment
.
(например, API 3.0 Фрагментов Android 3.0 от Дайан Хэкборн и Руководство по API Фрагментов )
На обоих устройствах функциональность есть в Fragments
. (просто)
На планшете всего приложения 1Activity
, на телефоне их многоActivities
.
Вопросы:
- Есть ли причина разделять телефонное приложение на множество
Activities
?
Одна из проблем этого метода заключается в том, что вы дублируете много логики в основном планшете Activity
и в отдельном телефоне Activities
.
- Не будет ли проще сохранить модель 1 Activity в обоих случаях, используя одну и ту же логику включения
Fragments
и выключения (просто используя другую схему)?
Таким образом, большая часть логики находится в Fragments
самих себе, и существует только одно Activity
- меньшее дублирование кода.
Кроме того, я читал о том ActionBarSherlock
, что он лучше всего работает Fragments
вместо Activities
(но я еще не работал с ним).
Упрощены ли учебники, или я упустил что-то важное в этом подходе?
Мы успешно испробовали оба подхода в офисе, но я собираюсь начать более крупный проект и хочу сделать все как можно проще для себя.
Некоторые ссылки на связанные вопросы:
- Дилемма: когда использовать фрагменты против действий:
- Шаблоны, когда использовать переход деятельности против динамических фрагментов
- Android - мне нужны некоторые пояснения фрагментов против действий и просмотров
- Действия или фрагменты в Android?
- Проектирование взаимодействия нескольких фрагментов и действий
- Так каковы точные преимущества фрагментов в Android 3.0?
Обновления
Началось вознаграждение за вопрос - до сих пор не уверен, почему мне нужно дублировать логику приложения в активности планшета и в каждой активности телефона.
Также найдена интересная статья ребят на площади, которую стоит прочитать:
onItemSelected()
метода в Деятельности. В моем "реальном" приложении у меня есть много списков и подсписков. Этот шаблон предполагает, что моя вкладка Activity должна иметь onItemSelected()
метод для обработки каждого из списков. Кроме того, в каждой деятельности телефона должна быть одинаковая логика, дублирующаяся внутри каждой из них. ИМХО, гораздо лучше поместить логику «Выбранный элемент» в каждый фрагмент - дублирования нет, и я предпочитаю такой способ структурирования кода. Я надеюсь, что это поможет