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 ...


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?


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.


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?


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.