W Android API 11+ Google wydało nową klasę o nazwie Fragment
.
W filmach Google sugeruje, że w miarę możliwości ( link1 , link2 ) powinniśmy używać fragmentów zamiast działań, ale nie wyjaśnili dokładnie, dlaczego.
Jaki jest cel fragmentów i niektóre możliwe ich zastosowania (inne niż niektóre przykłady interfejsu użytkownika, które można łatwo osiągnąć za pomocą prostych widoków / układów)?
Moje pytanie dotyczy fragmentów:
- Jakie są cele wykorzystania fragmentu?
- Jakie są zalety i wady korzystania z fragmentów w porównaniu do korzystania z działań / widoków / układów?
Dodatkowe pytania:
- Czy możesz podać naprawdę interesujące zastosowania fragmentów? Rzeczy, o których Google nie wspomniał w swoich filmach?
- Jaki jest najlepszy sposób komunikowania się między fragmentami a działaniami, które je zawierają?
- Jakie są najważniejsze rzeczy do zapamiętania podczas korzystania z fragmentów? Jakieś wskazówki i ostrzeżenia z twojego doświadczenia?
android
android-layout
android-fragments
android-activity
android-3.0-honeycomb
programista Androida
źródło
źródło
Odpowiedzi:
Fragmenty to rozwiązanie Androida do tworzenia interfejsów użytkownika wielokrotnego użytku. Niektóre z tych samych rzeczy można osiągnąć za pomocą działań i układów (na przykład za pomocą dołączeń). Jednak; fragmenty są podłączone do interfejsu API Androida, od HoneyComb i więcej. Pozwól mi rozwinąć;
The
ActionBar
. Jeśli chcesz, aby zakładki tam poruszały się po Twojej aplikacji, szybko zobaczysz, żeActionBar.TabListener
interfejs daje ciFragmentTransaction
jako argument wejściowy doonTabSelected
metody. Prawdopodobnie możesz to zignorować i zrobić coś innego i sprytnego, ale działasz przeciwko API, a nie z nim.Przez
FragmentManager
uchwyty «Powrót» dla ciebie w bardzo sprytny sposób. Powrót nie oznacza powrotu do ostatniej aktywności, jak w przypadku zwykłych aktywności. Oznacza powrót do poprzedniego stanu fragmentu.Możesz użyć cool
ViewPager
za pomocą,FragmentPagerAdapter
aby stworzyć interfejsy przesuwania.FragmentPagerAdapter
Kod jest znacznie czystsze niż zwykły adapter i kontroluje dawałaby poszczególnych fragmentów.Twoje życie będzie znacznie łatwiejsze, jeśli użyjesz Fragmentów podczas próby tworzenia aplikacji zarówno na telefony, jak i tablety. Ponieważ fragmenty są tak powiązane z interfejsami API Honeycomb +, będziesz chciał użyć ich również na telefonach, aby ponownie użyć kodu. Tutaj przydaje się biblioteka kompatybilności.
Możesz i powinieneś używać fragmentów do aplikacji przeznaczonych tylko na telefony. Jeśli masz na myśli przenośność. Korzystam
ActionBarSherlock
z bibliotek zgodności i do tworzenia aplikacji „wyglądających na ICS”, które wyglądają tak samo aż do wersji 1.6. Otrzymujesz najnowsze funkcje, takie jakActionBar
, z kartami, przepełnienie, podzielony pasek akcji, przeglądarka itp.Najlepszym sposobem komunikacji między fragmentami są zamiary. Kiedy naciskasz coś we fragmencie, zwykle dzwonisz
StartActivity()
z danymi na nim. Zamiar jest przekazywany do wszystkich fragmentów aktywności, którą uruchamiasz.źródło
Nie jestem pewien, o których filmach mówisz, ale wątpię, by mówili, że powinieneś używać fragmentów zamiast działań, ponieważ nie można ich bezpośrednio zamieniać. W rzeczywistości jest dość szczegółowy wpis w Przewodniku dla deweloperów, przeczytaj go, aby uzyskać szczegółowe informacje.
Krótko mówiąc, fragmenty żyją wewnątrz działań, a każde działanie może zawierać wiele fragmentów. Podobnie jak działania, mają określony cykl życia, w przeciwieństwie do działań, nie są komponentami aplikacji najwyższego poziomu. Zalety fragmentów obejmują ponowne użycie kodu i modułowość (np. Korzystanie z tego samego widoku listy w wielu działaniach), w tym możliwość budowania interfejsów wielopanelowych (głównie przydatne na tabletach). Główną wadą jest (pewna) dodatkowa złożoność. Zasadniczo można to osiągnąć dzięki (niestandardowym) widokom w niestandardowy i mniej solidny sposób.
źródło
Fragment jest elementem interfejsu użytkownika lub zachowania aplikacji, które można umieścić w działaniu, które umożliwia bardziej modułowy projekt działania. Nie będzie źle, jeśli powiemy, że fragment jest rodzajem subaktywności.
Oto ważne uwagi dotyczące fragmentu:
Fragment ma własny układ i własne zachowanie z własnymi wywołaniami zwrotnymi cyklu życia.
Możesz dodawać lub usuwać fragmenty działania, gdy działanie jest uruchomione.
Możesz łączyć wiele fragmentów w jednym działaniu, aby utworzyć wielopanelowy interfejs użytkownika.
Fragment można wykorzystać w wielu działaniach.
Cykl życia fragmentu jest ściśle związany z cyklem życia jego aktywności gospodarza.
Kiedy aktywność zostanie wstrzymana, wszystkie dostępne fragmenty aktywności również zostaną zatrzymane.
Fragment może implementować zachowanie bez komponentu interfejsu użytkownika.
Fragmenty zostały dodane do Android API w Android 3 (Honeycomb) z API w wersji 11.
Aby uzyskać więcej informacji, odwiedź oficjalną stronę Fragments .
źródło
To ważna informacja, którą znalazłem na fragmentach:
Źródło: https://www.pluralsight.com/blog/software-development/android-fragments
źródło
Aktywności to komponenty pełnoekranowe w aplikacji z paskiem narzędzi, wszystko inne to najlepiej Fragmenty. Jedna pełnoekranowa aktywność nadrzędna z paskiem narzędzi może zawierać wiele paneli, przewijalne strony, okna dialogowe itp. (Wszystkie fragmenty), do których można uzyskać dostęp od rodzica i komunikować się przez rodzica.
Przykład:
Działanie A, Działanie B, Działanie C:
vs
Działanie A, fragment 1, fragment 2, fragment 3:
źródło
Fragmenty są szczególnie przydatne w niektórych przypadkach, na przykład gdy chcemy przechowywać szufladę nawigacji na wszystkich naszych stronach. Możesz nadmuchać układ ramki dowolnym fragmentem i nadal mieć dostęp do szuflady nawigacji.
Jeśli używałeś działania, musiałbyś zachować szufladę we wszystkich działaniach, co tworzy zbędny kod. To jedno ciekawe zastosowanie fragmentu.
Jestem nowym użytkownikiem Androida i nadal uważam, że fragment jest w ten sposób pomocny.
źródło
Wiem, że zostało to już omówione na śmierć, ale chciałbym dodać jeszcze kilka punktów:
Fragmenty mogą być używane do wypełniania
Menu
s i mogąMenuItem
same obsługiwać kliknięcia. Daje to dalsze opcje modulacji dla twoich działań. Możesz robić rzeczy ContextualActionBar i tak dalej, nie wiedząc o tym swojej Aktywności, i możesz w zasadzie oddzielić ją od podstawowych czynności obsługiwanych przez Aktywność (Nawigacja / Ustawienia / Informacje).Frag nadrzędny z fragmentami potomnymi może dać ci dodatkowe opcje modulowania twoich komponentów. Np. Możesz łatwo zamieniać fragmenty, umieszczać nowe fragmenty w pagerze lub usuwać je, zmieniać ich kolejność. Wszystko bez Twojej aktywności, żeby coś o tym wiedzieć, koncentrując się na rzeczach na wyższym poziomie.
źródło
Fragmenty żyją w ramach działania i mają:
Pomyśl o Fragmentach jako poddziałaniu głównego działania, do którego należy, nie może ono istnieć samo w sobie i może być wywoływane / ponownie używane wielokrotnie. Mam nadzieję że to pomoże :)
źródło
1.Cele wykorzystania fragmentu?
źródło
Fragment żyje w działaniu, a działanie samo w sobie.
źródło