Fragments Android.app contre android.support.v4.app utilisant ViewPager?

182

J'ai une question concernant les bibliothèques de support Android, les fragments et, à titre d'exemple spécifique, la ViewPagerclasse. Mon intention est de créer une application avec des fonctionnalités similaires à l'exemple fourni sur le site Web des développeurs Android ( http://developer.android.com/training/animation/screen-slide.html ou http://developer.android.com/ formation / implémentation-navigation / laterale.html ). En examinant leur code, j'ai remarqué qu'ils utilisent la android.support.v4.appbibliothèque, qui d'après mes recherches est le seul moyen d'accéder à la ViewPagerclasse.

Dans ma situation, je n'ai aucun intérêt pour la compatibilité ascendante. Le niveau minimum d'API est 14 (Ice Cream Sandwich) et la cible de build est 4.2 Jelly Bean. Dans sa forme la plus simple, mon application fonctionne exactement comme la deuxième démo que j'ai liée sur le site Web de développement Android - il suffit de glisser entre trois onglets avec du contenu dans chacun.

Tous les articles / messages / réponses que j'ai lus semblent fortement favoriser la bibliothèque de support v4 . Maintenant, pour ma (mes) question (s), quoique de longue haleine:

  1. Quelle est la meilleure façon de structurer mon application - en utilisant android.support.v4.app, et donc en utilisant SupportFragments, ou pour utiliser les fragments fournis dans android.app- et pourquoi?

  2. Si les fragments de android.appsont la voie à suivre, quelle est la meilleure façon d'aborder ViewPagers?

  3. Si SupportFragments est le mieux adapté à la tâche, j'estimerais qu'ils possèdent les mêmes fonctionnalités que les autres - alors quel est le but de les avoir à l'intérieur android.app?

J'espère que quelqu'un avec une compréhension plus claire pourra me donner un peu de clarification parce que je suis ahuri ...

Jonstaff
la source
1
vous ne pouvez pas utiliser Fragmentssi vous utilisez le ViewPagervous devez utiliser la bibliothèque de supportSupportFragment
tyczj
1
SupportFragmentn'est pas une classe dans le SDK Android ...
Karakuri
2
@Karakuri Désolé pour la confusion; Je ne veux pas dire une classe littérale SupportFragment, je fais simplement référence à la Fragmentclasse disponible dans android.support.v4.app.
jonstaff
@jonstaff de toute façon, vous ne pouvez utiliser que la classe de fragment dans la bibliothèque de support
tyczj
@tyczj Merci, mais cela ne répond pas vraiment à la question. Je cherche davantage un pourquoi , car je sais déjà qu'il n'y a pas de ViewPagerplace android.app.
jonstaff

Réponses:

183

Vous pouvez utiliser ViewPageravec des fragments natifs du android.apppackage avec les adaptateurs du package android.support.v13.app . Vous devez utiliser le jar de support v13 pour cela.

Il existe deux versions des adaptateurs qui fonctionnent avec ViewPager, celles du v4package sont destinées à être utilisées avec des fragments de support, celles v13avec des fragments natifs.

La raison pour laquelle il existe maintenant deux implémentations de fragments est historique: les fragments du android.apppackage ont été introduits avec Android 3 pour les tablettes uniquement et la bibliothèque de support a été créée pour apporter des fragments aux téléphones exécutant des versions plus anciennes. Sur Android 4, vous avez les deux.

D'après ma propre expérience, je recommanderais d'utiliser des fragments de support, même lors du développement pour Android 4. Voici quelques raisons: Fragment ou Fragment de support?

brillenheini
la source
3
Merci pour ça! Je sais que je suis en retard à la fête, mais cette réponse m'a beaucoup aidé.
Kyle
support.v13 fonctionne pour ViewPager ... jusqu'à ce que vous essayiez d'utiliser ViewPager dans un DialogFragment :-(
SteelBytes
android.appn'a pas FragmentPagerAdapteralors il devient impossible d'utiliser viewpager avec android.app.Fragment? une idée ici? existe-t-il une option pour l'ancien pager de vue? Pour accrocher dynamiquement un fragment pour des onglets donnés
Nikhil
@Nikhil il existe deux versions de FragmentPagerAdapter. L'un dans le android.support.v4.apppackage fonctionne avec des fragments de support, l'autre android.support.v13.appavec des fragments `` normaux ''
brillenheini
J'espérais utiliser la v13 pour éviter d'utiliser la v4. Il s'avère que la v4 est une dépendance pour la v13, donc je pourrais aussi bien utiliser le support fragments / view pager.
Vas
3

android.app.FragmentLa classe est obsolète depuis Android P ( lien ), elle ne android.support.v4.app.Fragmentdoit donc être utilisée que partout.

Artyom
la source
1

Si vous allez cibler l'API 11+, vous n'aurez pas besoin de la bibliothèque de support [et votre apk réel sera au moins plus petit).

Si vous souhaitez prendre en charge quelque chose avant Android 3.x, vous aurez besoin de la bibliothèque de support.

Est-ce ce que vous demandez?

Mat
la source
9
vous devez utiliser la bibliothèque de support pour utiliser le ViewPager, ce qu'il demande
tyczj
@Matt Merci pour votre réponse, mais je recherche la meilleure solution qui intègre des ViewPagerfonctionnalités et une explication des raisons pour lesquelles cette solution est la meilleure.
jonstaff