Dans Android API 11+, Google a publié une nouvelle classe appelée Fragment
.
Dans les vidéos, Google suggère que, chaque fois que cela est possible ( link1 , link2 ), nous devrions utiliser des fragments au lieu d'activités, mais ils n'ont pas expliqué exactement pourquoi.
Quel est le but des fragments et de certaines utilisations possibles (autres que des exemples d'interface utilisateur pouvant être facilement obtenus avec de simples vues/présentations)?
Ma question concerne les fragments:
Questions bonus:
# 1 & # 2 Quels sont les objectifs de l'utilisation d'un fragment et quels sont les avantages et les inconvénients de l'utilisation de fragments par rapport à l'utilisation d'activités/vues/mises en page?
Les fragments sont la solution d'Android pour créer des interfaces utilisateur réutilisables. Vous pouvez réaliser certaines des mêmes choses en utilisant des activités et des présentations (par exemple, en utilisant des inclus). Pourtant; des fragments sont connectés à l'API Android, à partir de HoneyComb et plus. Laissez-moi élaborer;
Le ActionBar
. Si vous souhaitez que les onglets se déplacent dans votre application, vous remarquerez rapidement que l'interface ActionBar.TabListener
vous donne un paramètre FragmentTransaction
en tant qu'argument d'entrée de la méthode onTabSelected
. Vous pouvez probablement ignorer cela, et faire autre chose et intelligemment, mais vous travailleriez contre l'API, pas avec.
La FragmentManager
gère "le retour" de manière très intelligente. Retour ne signifie pas revenir à la dernière activité, comme pour les activités régulières. Cela signifie revenir à l'état de fragment précédent.
Vous pouvez utiliser le cool ViewPager
avec un FragmentPagerAdapter
pour créer des interfaces de balayage. Le code FragmentPagerAdapter
est beaucoup plus propre qu'un adaptateur classique et contrôle l'instanciation des fragments individuels.
Votre vie sera beaucoup plus facile si vous utilisez Fragments lorsque vous essayez de créer des applications pour téléphones et tablettes. Étant donné que les fragments sont tellement liés aux API Honeycomb +, vous souhaiterez également les utiliser sur les téléphones pour réutiliser le code. C'est là que la bibliothèque de compatibilité est utile.
Vous pourriez même et devriez utiliser des fragments pour des applications destinées aux téléphones uniquement. Si vous avez la portabilité en tête. J'utilise ActionBarSherlock
et les bibliothèques de compatibilité pour créer des applications "à la recherche d'ICS" identiques à celles de la version 1.6. Vous obtenez les dernières fonctionnalités comme la ActionBar
, avec des onglets, un débordement, une barre d’action divisée, un viewpager, etc.
Bonus 2
Le meilleur moyen de communiquer entre les fragments sont les intentions. Lorsque vous appuyez sur quelque chose dans un fragment, vous appelez généralement StartActivity()
avec des données. L'intention est transmise à tous les fragments de l'activité que vous lancez.
Vous ne savez pas de quelle vidéo (s) vous parlez, mais je doute qu'ils disent que vous devriez utiliser des fragments au lieu d'activités, car ils ne sont pas directement interchangeables. Il existe en fait un assez entrée détaillée dans le Guide de développement, pensez à le lire pour plus de détails.
En bref, les fragments vivent dans les activités et chaque activité peut héberger de nombreux fragments. Comme les activités, elles ont un cycle de vie spécifique, contrairement aux activités, ce ne sont pas des composants d’application de niveau supérieur. Les avantages des fragments incluent la réutilisation du code et la modularité (par exemple, en utilisant la même vue liste dans de nombreuses activités), y compris la possibilité de créer des interfaces à volets multiples (principalement utiles sur les tablettes). Le principal inconvénient est la complexité ajoutée (en partie). Vous pouvez généralement obtenir la même chose avec des vues (personnalisées) d’une manière non standard et moins robuste.
Un fragment est un élément de l'interface utilisateur ou du comportement d'une application pouvant être placé dans une activité, ce qui permet une conception d'activité plus modulaire. Ce ne sera pas faux si nous disons qu'un fragment est une sorte de sous-activité.
Voici quelques points importants concernant un fragment:
Un fragment a sa propre présentation et son propre comportement avec ses propres rappels de cycle de vie.
Vous pouvez ajouter ou supprimer des fragments dans une activité lorsque celle-ci est en cours d'exécution.
Vous pouvez combiner plusieurs fragments en une seule activité pour créer une interface utilisateur à volets multiples.
Un fragment peut être utilisé dans plusieurs activités.
Le cycle de vie d'un fragment est étroitement lié au cycle de vie de son activité hôte.
Lorsque l'activité est suspendue, tous les fragments disponibles dans l'activité seront également arrêtés.
Un fragment peut implémenter un comportement qui ne comporte aucun composant d'interface utilisateur.
Des fragments ont été ajoutés à l'API Android dans Android (Honeycomb) avec la version 11 de l'API.
Pour plus de détails, visitez le site officiel, Fragments.
C'est une information importante que j'ai trouvée sur des fragments:
Historiquement, chaque écran d'une application Android était implémenté en tant qu'activité distincte. Cela crée un défi pour la transmission d'informations entre les écrans car le mécanisme d'intention Android n'autorise pas le transfert d'un type de référence (c'est-à-dire un objet) directement entre les activités. Au lieu de cela, l'objet doit être sérialisé ou une référence accessible globalement doit être rendue disponible.
En faisant de chaque écran un fragment séparé, ce mal de tête lors du transfert de données est totalement évité. Les fragments existent toujours dans le contexte d'une activité donnée et peuvent toujours accéder à cette activité. En stockant les informations d'intérêt dans l'activité, le fragment de chaque écran peut simplement accéder à la référence de l'objet via l'activité.
Source: https://www.pluralsight.com/blog/software-development/Android-fragments
Les fragments sont particulièrement utiles dans certains cas, par exemple lorsque nous voulons conserver un tiroir de navigation dans toutes nos pages. Vous pouvez gonfler une structure de cadre avec le fragment de votre choix tout en ayant accès au tiroir de navigation.
Si vous aviez utilisé une activité, vous auriez dû garder le tiroir dans toutes les activités, ce qui créerait un code redondant. C'est une utilisation intéressante d'un fragment.
Je suis nouveau sur Android et je pense toujours qu'un fragment est utile de cette façon.
Les activités sont les composants plein écran de l'application avec la barre d'outils, tout le reste étant de préférence des fragments. Une activité parent en plein écran avec une barre d’outils peut avoir plusieurs volets, pages défilables, boîtes de dialogue, etc. (tous les fragments), tous accessibles depuis le parent et communiquant via le parent.
Exemple:
Activité A, Activité B, Activité C:
contre
Activité A, Fragment 1, Fragment 2, Fragment 3:
Je sais que cela a déjà été discuté à mort, mais je voudrais ajouter quelques points supplémentaires:
Les fragments peuvent être utilisés pour peupler Menu
s et peuvent gérer les MenuItem
clics par eux-mêmes. Donnant ainsi d'autres options de modulation à vos activités. Vous pouvez effectuer des tâches dans ContextualActionBar et ainsi de suite sans que votre activité ne le sache et peut les découpler des tâches de base traitées par votre activité (Navigation/Paramètres/À propos de).
Un parent Frag avec enfant Frags peut vous donner d'autres options pour moduler vos composants. Par exemple. vous pouvez facilement échanger Frags, mettre de nouveaux Frags dans un pageur ou les supprimer, les réorganiser. Tout cela sans que votre activité ne sache quoi que ce soit à son sujet en se concentrant uniquement sur les activités de niveau supérieur.
Un fragment vit dans une activité.
Tandis qu'une activité vit sur elle-même.
Les fragments vivent dans l'activité et ont:
Considérez les fragments comme une sous-activité de l'activité principale à laquelle il appartient. Ils ne peuvent pas exister par eux-mêmes et ils peuvent être appelés/réutilisés encore et encore. J'espère que cela t'aides :)
1.Le but d'utiliser un fragment?