Przykład online nie wypełnia wszystkich pustych miejsc. Spróbuję odpowiedzieć na twoje pytania bezpośrednio:
"Na pierwszym przykładzie (tym z telefonem) powinieneś utworzyć działanie z plikiem xml zawierającym pojedynczy i działanie, które wywołuje tylko setContentView() na tym xml i to wszystko?"
Zacząłeś we właściwym miejscu. Ale to coś więcej. Zawsze istnieje więcej niż jeden sposób rozwiązania problemu w systemie Android, ale zalecany sposób generowania efektu posiadania dynamicznej liczby fragmentów na podstawie dostępności. Nieruchomości to:
- Tworzenie plików układ XML w/układ dla głównego (domyślnie) ukierunkowane orientacja/urządzenia/form-factor/SDK
- Tworzenie układu plików XML dla najmniejszych szerokości odniesienia dla innych ukierunkowanej pomysłowość. Możesz również chcieć kierować inne orientacje, zestawy SDK itp.
- Każdy plik XML układu będzie miał swój własny zestaw zdefiniowanych fragmentów.
- W Aktywności sprawdź, które fragmenty są obecne.
Oczywiście można zastosować analogiczną strategię dla układów programowych.
W przykładzie w oryginalnym pytanie (z Dokumentów Google) można mieć:
- układ/main.XML :: ten układ musiałby tylko Fragment 1
- layout-sw600dp/main.xml :: ten układ musiałby Fragments 1, 2
Następnie w MainActivity.java chcesz sprawdzić istnienie każdego fragmentu . Aby to zrobić, możesz użyć FragmentManager # findFragmentById(), aby sprawdzić: if findFragmentById() zwraca null dla Fragment-2, a MainActivity wie, że urządzenie załadowało layout/main.xml i obsługuje tylko jeden fragment.
Krok "wróć" z przykładu nieco ujawnia, że: przed użyciem Fragmentów mógłbyś nazwać Aktywność B z Aktywności A z startAcitityForResult (int). W paradygmacie Fragment prawdopodobnie potrzebujesz tylko wyniku z Fragmentu 2, aby spowodować coś, co może się wydarzyć w Fragmencie 1, więc rozsądne jest, aby MainActivity był tym gatunkiem strażnikiem. W miarę rozwijania przykładu możesz zauważyć, że w innych aplikacjach usługa MainActivity może wymagać wywoływania innych działań - z dowolnego powodu. Być może celujesz w duży tablet z wystarczającą ilością nieruchomości na 3 fragmenty, ale na telefonie, który musi być 3 czynnościami. Rzeczy mogą się zainteresować, ale Fragment API jest dość potężny.
"Czy można ustawić Fragment jako działanie lub czy Wrapper jest zawsze potrzebny do używania fragmentów?"
Fragment nie jest aktywnością. Rzeczywiście Fragmenty są ładowane przez Działania, więc tak, można powiedzieć, że zawsze wymagane jest opakowanie. Dotykasz innego subtelnego aspektu Fragmentów. Podczas gdy Działania zachowują się jak Kontrolery MVC, Fragmenty mogą być nazywane "mini-kontrolerami" ze względu na ich cykl życiowy, który zarówno przypomina jak i wykonuje wraz z Działaniem. Ponownie, cykl życia Fragmentu jest zawarty wewnątrz ("owinięty przez") cyklem życia Działania zarządzającego Fragmentem. Polecam zapoznanie się z cyklem życia Fragmentu udokumentowanym pod numerem http://developer.android.com/guide/topics/fundamentals/fragments.html#Lifecycle.
przyjmowanie rozwiązanie krok wybiegające tworzyć generic 'SingleFragmentActivity' ten fragment jako parametr konstruktora i dodaj go' onCreate'. następnie użyj tego działania za każdym razem, gdy potrzebujesz aktywności pojedynczego fragmentu. – shem
@shem - Robię dokładnie to samo - przekazuję nazwę kanoniczną Fragment jako działanie, aby można było utworzyć instancję z ciągu. – Graeme
Cóż, możesz także przestać używać Fragmentów, chyba że faktycznie potrzebujesz. W większości przypadków użycie prostego działania sprawiłoby tak samo dobrze –