Je développe une application prenant en charge Android> = 4.0. Il utilise des fragments du android.app
package. Comme je suis confronté à des problèmes avec l'ancienne implémentation de fragment dans la version 4.0, comme celle-ci , qui est déjà corrigée dans la bibliothèque de support, j'envisage de revenir à l'implémentation de fragment de la bibliothèque de support pour obtenir une implémentation plus fiable et cohérente.
Quelle est ton opinion à ce propos? 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?
android
android-fragments
android-support-library
brillenheini
la source
la source
Réponses:
D'après mon expérience, utiliser la même implémentation de fragment sur tous les appareils Android est un grand avantage. Je ne pouvais pas me débarrasser de toutes les NullPointerExceptions lorsque l'état est enregistré sur Android 4.0 à l'aide de fragments natifs, avec la bibliothèque de support, ils ont tous disparu. De plus, je ne voyais aucun inconvénient à ce jour 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. La bibliothèque de support a des bogues corrigés qui sont toujours présents dans les implémentations de fragments plus anciennes et est fréquemment mis à jour avec plus de corrections de bogues.
la source
android.app.Fragment
alors? Si vous pouvez ajouter ceci à votre réponse ici avec un peu plus d'explications, je serais pleinement satisfait. Merci!objectAnimator
, même si le système d'exploitation cible le prend en charge). Ce qui, dans le cas où vous utilisezViewPager
, signifie que vous devez utiliser des adaptateurs de la bibliothèque de support v13, sinon vous ne pouvez pas avoir à la fois le visualiseur et l'animation de retournement.Une des principales raisons de s'en tenir à l '
SupportFragment
pendant un certain temps est que vous n'avez pas accès à l'ChildFragmentManager
API jusqu'à 17. La bibliothèque de support vous donnera 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 tablette avec beaucoup de complexité et / ou votre architecture globale est basée sur une mise en page à onglets ou utilise le tiroir de navigation.
la source
J'étais également frustré de devoir inclure les bibliothèques de support, malgré le ciblage d'Android 4.0+ - mais il semble que cela soit officiellement recommandé:
http://developer.android.com/tools/support-library/features.html
la source
IMHO si vous prévoyez 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 vous pourriez rencontrer des problèmes de bogues dans les premières versions, mais je pense que la plupart de ceux-ci devraient être assez simples à contourner. De plus, la bibliothèque de compatibilité est censée mapper sur les fragments natifs au cas où vous seriez de toute façon sous 4.0 et supérieur. De toute façon, vous risquez donc de devoir vous débattre avec 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 fois dans la structure de package "native"), ce qui rend le développement un peu plus compliqué.
Cependant, si vous souhaitez également publier votre application avant la version 4.0, il n'y a aucun moyen de contourner la bibliothèque de support. De plus, étant donné qu'il y a environ 38% de tous les utilisateurs sur 2.3, il peut ê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 le support de googles ActionBar Library une fois qu'il est finalement publié).
la source
Il semble qu'il soit préférable d'utiliser la bibliothèque de support maintenant car j'ai vu la déclaration ici https://developer.android.com/reference/android/app/Fragment.html
la source