Fragmenty Android.app vs. android.support.v4.app przy użyciu ViewPager?

182

Mam pytanie dotyczące bibliotek obsługi systemu Android, fragmentów, a konkretnie przykładu - ViewPagerklasy. Moim zamiarem jest stworzenie aplikacji o podobnej funkcjonalności jak próbka podana na stronie Android Developer ( http://developer.android.com/training/animation/screen-slide.html lub http://developer.android.com/ szkolenie / implementacja-nawigacja / lateral.html ). Analizując ich kod, zauważyłem, że korzystają z android.support.v4.appbiblioteki, która z moich badań jest jedynym sposobem na dostęp do ViewPagerklasy.

W mojej sytuacji nie interesuje mnie zgodność wsteczna. Minimalny poziom API to 14 (Ice Cream Sandwich), a docelowy poziom budowy to 4,2 Jelly Bean. W najprostszej formie moja aplikacja działa dokładnie tak samo, jak drugie demo, które podlinkowałem na stronie dla programistów Androida - po prostu przesuwając pomiędzy trzema kartami z zawartością w każdej.

Wszystkie artykuły / posty / odpowiedzi, które przeczytałem, wydają się faworyzować bibliotekę wsparcia v4 . Teraz moje, choć długo rozwarte, pytanie (pytania):

  1. Jaki jest najlepszy sposób na ustrukturyzowanie mojej aplikacji - użycie android.support.v4.app, a tym samym użycie SupportFragments lub użycie fragmentów zawartych w android.app- i dlaczego?

  2. Jeśli Fragmenty android.appsą właściwą drogą, jaki jest optymalny sposób podejścia ViewPagers?

  3. Jeśli SupportFragmenty najlepiej nadają się do tego zadania, oszacowałbym, że mają taką samą funkcjonalność jak inne - więc po co w ogóle je mieć w środku android.app?

Mam nadzieję, że ktoś z bardziej zrozumiałym zrozumieniem może dać mi trochę wyjaśnienia, ponieważ jestem zdumiony ...

jonstaff
źródło
1
nie możesz użyć, Fragmentsjeśli używasz ViewPager, musisz skorzystać z biblioteki wsparciaSupportFragment
tyczj
1
SupportFragmentnie jest klasą w pakiecie Android SDK ...
Karakuri,
2
@Karakuri Przepraszamy za zamieszanie; Nie mam na myśli literalnej klasy SupportFragment, mam na myśli jedynie Fragmentklasę dostępną w android.support.v4.app.
jonstaff
@jonstaff w obu przypadkach możesz używać klasy fragmentów tylko w bibliotece wsparcia
tyczj
@tyczj Dzięki, ale to tak naprawdę nie odpowiada na pytanie. Szukam więcej za dlaczego , skoro już wiem, że nie jest ViewPagerw android.app.
jonstaff

Odpowiedzi:

183

Możesz używać ViewPagerz natywnymi fragmentami z android.apppakietu z adapterami z pakietu android.support.v13.app . W tym celu musisz użyć słoika wsparcia v13.

Istnieją dwie wersje adapterów, które współpracują ViewPager, te w v4pakiecie są przeznaczone do użytku z fragmentami pomocniczymi, a te v13z fragmentami natywnymi.

Powód, dla którego istnieją teraz dwie implementacje fragmentów, jest historyczny: Fragmenty w android.apppakiecie zostały wprowadzone tylko w systemie Android 3 na tablety, a biblioteka obsługi została utworzona, aby przenosić fragmenty na telefony ze starszymi wersjami. Na Androidzie 4 masz oba.

Z własnego doświadczenia polecam korzystanie z fragmentów wsparcia, nawet podczas programowania dla Androida 4. Oto kilka powodów: Fragment czy fragment wsparcia?

brillenheini
źródło
3
Dziękuję Ci za to! Wiem, że jestem spóźniony na przyjęcie, ale ta odpowiedź bardzo mi pomogła.
Kyle
support.v13 działa dla ViewPager ... dopóki nie spróbujesz użyć ViewPager w DialogFragment :-(
SteelBytes
android.appnie ma, FragmentPagerAdapterwięc korzystanie z przeglądarki z Android.app.Fragment staje się niemożliwe jakiś pomysł tutaj? czy jest jakaś opcja starego pagera widoku? Aby dynamicznie zaczepić fragment dla podanych zakładek
Nikhil
@Nikhil istnieją dwie wersje FragmentPagerAdapter. Jeden w android.support.v4.apppakiecie działa z fragmentami pomocniczymi, drugi android.support.v13.appz fragmentami „normalnymi”
brillenheini,
Miałem nadzieję na użycie wersji 13, aby uniknąć używania wersji 4. Okazuje się, że v4 jest zależnością dla v13, więc równie dobrze mogę użyć fragmentów obsługi / pager widoków.
Vas
3

android.app.Fragmentklasa jest przestarzała od Androida P ( link ), więc android.support.v4.app.Fragmentpowinna być używana tylko wszędzie.

Artem
źródło
1

Jeśli masz zamiar celować w API 11+, nie będziesz potrzebować biblioteki wsparcia [a Twoja rzeczywista aplikacja będzie przynajmniej mniejsza).

Jeśli chcesz coś obsługiwać przed Androidem 3.x, potrzebujesz biblioteki wsparcia.

Czy o to pytasz?

Matt
źródło
9
musisz użyć biblioteki wsparcia, aby użyć ViewPagera, o co on pyta
tyczj
@Matt Dziękuję za odpowiedź, ale szukam najlepszego rozwiązania, które zawiera ViewPagerfunkcjonalność i wyjaśnienie, dlaczego to rozwiązanie jest najlepsze.
jonstaff