Android.app Fragmente vs. android.support.v4.app mit ViewPager?

182

Ich habe eine Frage zu den Android-Unterstützungsbibliotheken, Fragmenten und als spezifisches Beispiel zur ViewPagerKlasse. Ich beabsichtige, eine App mit ähnlichen Funktionen wie auf der Android Developer-Website ( http://developer.android.com/training/animation/screen-slide.html oder http://developer.android.com/) zu erstellen. training / implementierungsnavigation / lateral.html ). Bei der Betrachtung ihres Codes habe ich festgestellt, dass sie die android.support.v4.appBibliothek verwenden, die nach meinen Recherchen der einzige Weg ist, auf die ViewPagerKlasse zuzugreifen .

In meiner Situation habe ich kein Interesse an Abwärtskompatibilität. Die minimale API-Stufe beträgt 14 (Ice Cream Sandwich) und das Build-Ziel ist 4,2 Jelly Bean. In der einfachsten Form funktioniert meine App genauso wie die zweite Demo, die ich auf der Android-Entwickler-Website verlinkt habe - nur zwischen drei Registerkarten mit jeweils Inhalten.

Alle Artikel / Beiträge / Antworten, die ich gelesen habe, scheinen die v4-Unterstützungsbibliothek stark zu bevorzugen . Nun zu meinen, wenn auch langatmigen Fragen:

  1. Was ist der beste Weg, um meine Anwendung zu strukturieren - mit android.support.v4.appund damit SupportFragments oder mit den darin enthaltenen Fragmenten android.app- und warum?

  2. Wenn Fragmente von android.appder richtige Weg sind, wie geht man dann am besten vor ViewPagers?

  3. Wenn SupportFragments für die Aufgabe am besten geeignet sind, würde ich schätzen, dass sie dieselbe Funktionalität wie die anderen besitzen. Was ist also der Zweck, sie überhaupt im Inneren zu haben android.app?

Hoffentlich kann mir jemand mit einem klareren Verständnis ein bisschen Klarheit verschaffen, weil ich verblüfft bin ...

Jonstaff
quelle
1
Sie können nicht verwenden, Fragmentswenn Sie die verwenden, die ViewPagerSie benötigen, um die Support-Bibliothek zu verwendenSupportFragment
tyczj
1
SupportFragmentist keine Klasse im Android SDK ...
Karakuri
2
@ Karakuri Entschuldigung für die Verwirrung; Ich meine keine wörtliche Klasse SupportFragment, ich beziehe mich nur auf die FragmentKlasse, die in verfügbar ist android.support.v4.app.
Jonstaff
@ Jonstaff so oder so können Sie nur die Fragment-Klasse in der Support-Bibliothek verwenden
Tyczj
@tyczj Danke, aber das beantwortet die Frage nicht wirklich. Ich suche eher nach einem Warum , da ich bereits weiß, dass es kein ViewPagerIn gibt android.app.
Jonstaff

Antworten:

183

Sie können ViewPagermit nativen Fragmenten aus dem android.appPaket mit den Adaptern aus dem android.support.v13.app- Paket verwenden. Sie müssen dafür das v13-Support-Jar verwenden.

Es gibt zwei Versionen der Adapter, mit ViewPagerdenen gearbeitet wird. Die im v4Paket enthaltenen sind für Support-Fragmente und die für v13native Fragmente vorgesehen.

Der Grund, warum es jetzt zwei Fragmentimplementierungen gibt, ist historisch: Fragmente im android.appPaket wurden mit Android 3 nur für Tablets eingeführt, und die Unterstützungsbibliothek wurde erstellt, um Fragmente auf Telefone zu bringen, auf denen ältere Versionen ausgeführt werden. Auf Android 4 haben Sie beide.

Aus eigener Erfahrung würde ich die Verwendung von Support-Fragmenten empfehlen, auch bei der Entwicklung für Android 4. Hier einige Gründe: Fragment oder Support-Fragment?

brillenheini
quelle
3
Danke dafür! Ich weiß, dass ich zu spät zur Party komme, aber diese Antwort hat mir sehr geholfen.
Kyle
support.v13 funktioniert für ViewPager ... bis Sie versuchen, ViewPager in einem DialogFragment zu verwenden :-(
SteelBytes
android.apphat so nicht FragmentPagerAdapterdann wird es unmöglich, viewpager mit android.app.Fragment zu verwenden? Irgendeine Idee hier? Gibt es eine Option für Old View Pager? Um Fragmente für bestimmte Tabs dynamisch zu verknüpfen
Nikhil
@Nikhil gibt es zwei Versionen von FragmentPagerAdapter. Das eine im android.support.v4.appPaket arbeitet mit Unterstützungsfragmenten, das andere android.support.v13.appmit "normalen" Fragmenten
brillenheini
Ich hatte gehofft, v13 zu verwenden, damit ich v4 vermeiden kann. Es stellt sich heraus, dass v4 eine Abhängigkeit für v13 ist, daher kann ich auch den Support-Fragment / View-Pager verwenden.
Vas
3

android.app.FragmentKlasse ist seit Android P ( Link ) veraltet , sollte also nur android.support.v4.app.Fragmentüberall verwendet werden.

Artyom
quelle
1

Wenn Sie auf API 11+ abzielen, benötigen Sie die Support-Bibliothek nicht [und Ihre tatsächliche apk wird zumindest kleiner sein].

Wenn Sie etwas vor Android 3.x unterstützen möchten, benötigen Sie die Support-Bibliothek.

Fragen Sie das?

Matt
quelle
9
Sie müssen die Support-Bibliothek verwenden, um den ViewPager zu verwenden, nach dem er fragt
tyczj
@Matt Vielen Dank für Ihre Antwort, aber ich suche nach der besten Lösung mit ViewPagerFunktionalität und einer Erklärung, warum diese Lösung die beste ist.
Jonstaff