web-dev-qa-db-fra.com

Fragment ou fragment de support?

Je développe une application qui prend en charge Android> = 4.0. Il utilise des fragments de la Android.app paquet. Comme je suis confronté à des problèmes liés à l’ancienne implémentation de fragment dans 4.0, comme celui-ci , qui sont déjà corrigés dans la bibliothèque de support, j’envisage de revenir à l’implémentation de fragment à partir de la bibliothèque de support pour obtenir plus de détails. mise en œuvre fiable et cohérente.

Quelle est votre opinion à ce sujet? Utilisez-vous des fragments de la bibliothèque de support, même s'ils sont déjà disponibles, lors du développement pour Android 4?

125
brillenheini

D'après mon expérience, utiliser le même fragment d'implémentation sur tous les appareils Android est un avantage considérable. Je ne pouvais pas supprimer toutes les NullPointerExceptions lorsque l'état était enregistré sur Android 4.0 utilisant des fragments natifs, avec la bibliothèque de support, ils sont tous partis. De plus, je ne voyais aucun inconvénient pour le moment avec cette approche.

Ma réponse à ma propre question est donc la suivante: lors du développement pour Android 4.x, l’utilisation des fragments de la bibliothèque de support est une bonne idée. Cette dernière contient des bogues corrigés qui sont toujours présents dans implémentations de fragments plus anciennes et est fréquemment mis à jour avec plus de corrections de bugs.

90
brillenheini

L'une des principales raisons de vous en tenir à SupportFragment pendant un certain temps est que vous n'avez pas accès à ChildFragmentManager jusqu'à l'API 17. La bibliothèque de support vous fournira une version de support du gestionnaire de fragments enfants.

Cela devient un gros problème si vous avez des fragments qui contiennent d'autres fragments. Ceci est courant dans les applications de tablettes très complexes et/ou votre architecture globale est basée sur une disposition par onglets ou utilise le tiroir de navigation.

40
Ross Hambrick

Je devenais aussi frustré de devoir inclure les bibliothèques de support, malgré le ciblage Android 4.0+ - mais il semble que cela soit officiellement recommandé:

Le package Android de la bibliothèque de support contient plusieurs bibliothèques pouvant être incluses dans votre application. Chacune de ces bibliothèques prend en charge une plage spécifique de Android et ensemble de fonctionnalités .

Ce guide explique les fonctionnalités importantes et la prise en charge des versions fournies par les bibliothèques de support pour vous aider à choisir celles que vous souhaitez inclure dans votre application. En général, nous recommandons l'inclusion des bibliothèques v4 support et v7 appcompat, car elles prennent en charge une large gamme de versions Android) et fournissent des API pour les modèles d'interface utilisateur recommandés.

http://developer.Android.com/tools/support-library/features.html

21
sourabhj

IMHO si vous envisagez de développer pour 4.0 uniquement, je recommanderais d'aller avec les bibliothèques natives car l'exécutable deviendra plus petit. Il est vrai que les premières versions peuvent poser des problèmes de bogues, mais je pense que la plupart d’entre eux devraient être assez simples à utiliser. De plus, la bibliothèque de compatibilité est supposée mapper sur les fragments natifs si vous utilisez de toute façon la version 4.0 ou supérieure. Vous pourriez donc finir par avoir à faire face à ce genre de problèmes. Le problème avec les bibliothèques de support est que beaucoup de classes apparaissent 2x (une fois dans la structure du package de support et une autre dans la structure du package "natif"), ce qui rend le développement un peu plus lourd.

Toutefois, si vous souhaitez également publier votre application avant la version 4.0, la bibliothèque de support est la seule solution. De plus, comme il existe environ 38% de tous les utilisateurs de la version 2.3, il pourrait être judicieux d'inclure cette version du système d'exploitation. Dans un tel cas, vous pouvez utiliser la bibliothèque de support en combinaison avec Jake Wartons ActionBarSherlock (ou avec Google pour soutenir ActionBar Library une fois qu'elle sera finalement publiée).

4
RaB

Il semble qu'il soit préférable d'utiliser maintenant Support Library car j'ai vu la déclaration ici https://developer.Android.com/reference/Android/app/Fragment.html

Cette classe était obsolète dans le niveau API P. Utilisez le fragment de bibliothèque de support pour obtenir un comportement cohérent sur tous les périphériques et accéder à Lifecycle.

2
code4j