Wprowadzenie:
Podstawowy wzorzec „Fragment Tutorial” wygląda mniej więcej tak:
- Na tablecie miej listę po lewej, szczegóły po prawej.
- Oba są
Fragmentsi oba znajdują się w tym samymActivity. - Na telefonie miej listę
Fragmentw jednymActivity. - Uruchom nowy
Activityze 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 Activityi 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
Fragmentsi wyłączania (przy użyciu innego układu)?
W ten sposób większość logiki znajduje się w Fragmentssobie, a Activitykodowanie jest tylko jedno .
Przeczytałem też o tym ActionBarSherlock, że wydaje się, że działa najlepiej Fragmentszamiast 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