Wprowadzenie:
Podstawowy wzorzec „Fragment Tutorial” wygląda mniej więcej tak:
- Na tablecie miej listę po lewej, szczegóły po prawej.
- Oba są
Fragments
i oba znajdują się w tym samymActivity
. - Na telefonie miej listę
Fragment
w jednymActivity
. - Uruchom nowy
Activity
ze szczegółamiFragment
.
(np. API 3.0 Fragments API autorstwa Dianne Hackborn i Przewodnik API Fragments API )
Na obu urządzeniach funkcjonalność znajduje się w Fragments
. (prosty)
Na tablecie cała aplikacja to 1Activity
, na telefonie jest ich wieleActivities
.
Pytania:
- Czy istnieje powód, aby podzielić aplikację telefonu na wiele
Activities
?
Jednym z problemów związanych z tą metodą jest to, że powielasz dużo logiki na głównym tablecie Activity
i na osobnym telefonie Activities
.
- Czy nie byłoby łatwiej zachować model 1 działania w obu przypadkach przy użyciu tej samej logiki włączania
Fragments
i wyłączania (przy użyciu innego układu)?
W ten sposób większość logiki znajduje się w Fragments
sobie, a Activity
kodowanie jest tylko jedno .
Przeczytałem też o tym ActionBarSherlock
, że wydaje się, że działa najlepiej Fragments
zamiast Activities
(ale jeszcze z tym nie pracowałem).
Czy samouczki są nadmiernie uproszczone, czy też pominąłem coś ważnego w tym podejściu?
Wypróbowaliśmy oba podejścia z powodzeniem w biurze - ale mam zamiar rozpocząć większy projekt i chcę, aby wszystko było jak najłatwiejsze.
Niektóre linki do powiązanych pytań:
- Dylemat: kiedy używać Fragmentów vs Aktywności:
- Określa, kiedy należy zastosować Przejście aktywności vs Fragmenty dynamiczne
- Android - potrzebuję wyjaśnień fragmentów w porównaniu do działań i widoków
- Aktywności lub fragmenty w Androidzie?
- Projektowanie interakcji wielu fragmentów i działań
- Jakie są dokładne zalety Fragmentów w Androidzie 3.0?
Aktualizacje
Zacząłem nagrodę od pytania - wciąż nie jestem przekonany, dlaczego muszę powielać logikę aplikacji w aktywności na tablecie i każdej aktywności na telefonie.
Znalazłem także ciekawy artykuł od facetów z Square, który warto przeczytać:
onItemSelected()
metody w ćwiczeniu . W mojej „prawdziwej” aplikacji mam wiele list i podlist. Ten wzorzec sugeruje, że moja Aktywność na karcie musi mieć onItemSelected()
metodę obsługi każdej z list. Co więcej, działania telefoniczne muszą mieć tę samą logikę zduplikowaną w każdym z nich. IMHO o wiele lepiej jest umieścić logikę wyboru przedmiotu w każdym fragmencie - nie ma duplikacji i wolę ten sposób strukturyzacji kodu. Mam nadzieję, że to pomoże