Podczas korzystania Fragments
, można myśleć o nich jako o View
i tym Activity
jak będąc Controller
. W mojej osobistej opinii Fragments to reakcja Google'a na kolana, która wspiera tablety, a teraz utknęliśmy w nich :(
Używam fragmentów każdego dnia, a ja z pewnością odczuwam twój ból. Kiedy po raz pierwszy o nich przeczytałem pomyślałem sobie „to jest naprawdę cool”, ale po ich użyciu, one spadną na tak wiele sposobów, ale głównie dlatego, że byłoby ich używać nieprawidłowo :(
Oto niektóre z pułapek, które ja napotykają ...
Nie używaj onclick
w układzie fragmentów, ponieważ jest to Activity
, a NIE Fragment
, który obsłuży kliknięcie. Jeśli użyjesz tego atrybutu, a później użyjesz fragmentu w innym Activity
, będziesz musiał pamiętać, aby dodać również metodę onclick
do tego Activity
. Tak więc, użyj findViewById
, a następnie ręcznie załóż uchwyt do kliknięcia w onCreateView
fragmentu.
Podczas komunikacji z innymi Fragmentami, użyj Activity
jako kontrolera do kierowania wiadomości. (Wiele przykładów tego, jak to się dzieje przy użyciu interfejsów). Kluczem jest tutaj to, że jeśli uruchamiasz wiele fragmentów na urządzeniu, w którym jeden fragment będzie komunikował się bezpośrednio z innym fragmentem, wystąpi dziwne, ale przewidywalne zachowanie. Na przykład, jeśli Fragment A bezpośrednio zaktualizował Widok w Fragment B, ale Fragment B nie jest widoczny (ponieważ go zastąpiłeś - rozważ telefon), wtedy gdy Fragment B jest widoczny, wtedy View
może nie zostać zaktualizowany, ponieważ View
jest odtwarzany. Tak więc, jeśli aktualizujesz Fragment
pamiętaj, aby zaktualizować dane w fragmencie, a następnie zaktualizować części View
w onCreateView
, które są wywoływane, gdy fragment staje się ponownie widoczny (np., Że został pobity bieżący fragment, wyświetlasz poprzedni fragment jeden)
Nie buduj kompletnej aplikacji, używając tylko fragmentów. Zamiast tego buduj aplikacje tak, jak zwykle, używając działań, a następnie traktując Fragment
ma wyświdlony widok (który jest). tj. zaprojektuj aplikację tak, że masz wiele fragmentów i wiele działań, a niektóre działania mogą wykorzystywać więcej niż jeden fragment.
Moja pierwsza myśl z fragmentami był jednym gdzie myślałem, że to będzie wielki po prostu zbudować kompletną aplikację używając fragmenty i jedno działanie ... I ostatecznie zakończył App, ale wpadłem na tak wiele spraw, które z wykorzystaniem podejście. Moim kolejnym podejściem było użycie wielu fragmentów i wielu działań, a wszystko poszło znacznie lepiej.
Konkluzja jest taka, że fragmenty są świetne, jeśli ich używać jako View
, ale jeśli zaczniesz próbuje wykorzystać je podobną działalność, a potem idziesz do napotkasz problemy :(Pomyśl o Activiy
->Fragment
jako bytu Controller
->View
.
Polecam również lekturę i zrozumienie zasad cyklu Fragment oprócz działalności (Lifecycle Pro Android 4 ma świetny obraz do jej reprezentowania) i będziesz zaoszczędzić godzin bólu :)
I don” Mam wystarczająco dużo doświadczenia, aby odpowiedzieć, ale moje pierwsze zdanie na temat fragmentów sprawiło, że zakwestionowałem ich użycie w aplikacjach bez tabletów. Zdecydowanie wzrost złożoności dla niewielkiej poprawy w dev UI. – tcarvin