Dans Android API 11+, Google a publié une nouvelle classe appelée Fragment
.
Dans les vidéos, Google suggère que chaque fois que possible ( link1 , lien2 ), nous devrions utiliser des fragments au lieu d'activités, mais ils n'a pas expliqué exactement pourquoi.
Quel est le but des fragments et de leurs utilisations possibles (autres que certains exemples d'interface utilisateur qui peuvent être facilement atteints par de simples vues / mises en page)?
Ma question concerne les fragments:
- À quoi sert l'utilisation d'un fragment?
- Quels sont les avantages et les inconvénients de l'utilisation de fragments par rapport à l'utilisation d'activités / vues / mises en page?
Questions bonus:
- Pouvez-vous donner des utilisations vraiment intéressantes des fragments? Des choses que Google n'a pas mentionnées dans leurs vidéos?
- Quelle est la meilleure façon de communiquer entre les fragments et les activités qui les contiennent?
- Quelles sont les choses les plus importantes à retenir lorsque vous utilisez des fragments? Des conseils et des avertissements de votre expérience?
android
android-layout
android-fragments
android-activity
android-3.0-honeycomb
développeur android
la source
la source
Réponses:
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 mises en page (par exemple en utilisant des inclusions). Toutefois; les fragments sont connectés à l'API Android, à partir de HoneyComb, et plus. Permettez-moi de développer;
Le
ActionBar
. Si vous voulez que des onglets là-hautActionBar.TabListener
permettent de naviguer dans votre application, vous voyez rapidement que l' interface vous donne unFragmentTransaction
argument d'entrée pour laonTabSelected
méthode. Vous pourriez probablement ignorer cela et faire autre chose et intelligent, mais vous travailleriez contre l'API, pas avec elle.Les
FragmentManager
poignées «dos» pour vous d'une manière très astucieuse. Retour ne signifie pas retour à 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 unFragmentPagerAdapter
pour créer des interfaces de balayage. LeFragmentPagerAdapter
code est beaucoup plus propre qu'un adaptateur standard et il contrôle les instanciations des fragments individuels.Votre vie sera beaucoup plus facile si vous utilisez des 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 pouvez et devez même utiliser des fragments pour des applications destinées uniquement aux téléphones. Si vous envisagez la portabilité. J'utilise
ActionBarSherlock
et les bibliothèques de compatibilité pour créer des applications "à la recherche d'ICS", qui se ressemblent jusqu'à la version 1.6. Vous obtenez les dernières fonctionnalités comme leActionBar
, avec les onglets, le débordement, la barre d'action fractionnée, le viseur, etc.La meilleure façon de communiquer entre les fragments est l'intention. 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.la source
Je ne sais pas à quelle (s) vidéo (s) vous faites référence, mais je doute qu'ils disent que vous devez utiliser des fragments au lieu d'activités, car ils ne sont pas directement interchangeables. Il y a en fait une entrée assez détaillée dans le Dev Guide, pensez à le lire pour plus de détails.
En bref, les fragments vivent à l'intérieur des 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 de liste dans de nombreuses activités), y compris la possibilité de créer des interfaces à volets multiples (surtout utiles sur les tablettes). Le principal inconvénient est (en partie) une complexité supplémentaire. Vous pouvez généralement réaliser la même chose avec des vues (personnalisées) d'une manière non standard et moins robuste.
la source
Un fragment est un élément de l'interface utilisateur ou du comportement d'une application qui peut ê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 des points importants sur un fragment:
Un fragment a sa propre disposition et son propre comportement avec ses propres rappels de cycle de vie.
Vous pouvez ajouter ou supprimer des fragments dans une activité pendant que l'activité 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 du 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 sans composant d'interface utilisateur.
Des fragments ont été ajoutés à l'API Android dans Android 3 (Honeycomb) avec l'API version 11.
Pour plus de détails, veuillez visiter le site officiel, Fragments .
la source
Ce sont des informations importantes que j'ai trouvées sur des fragments:
Source: https://www.pluralsight.com/blog/software-development/android-fragments
la source
Les activités sont les composants plein écran de l'application avec la barre d'outils, tout le reste est de préférence des fragments. Une activité parent en plein écran avec une barre d'outils peut avoir plusieurs volets, pages déroulantes, 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:
la source
Les fragments sont particulièrement utiles dans certains cas, comme lorsque nous voulons conserver un tiroir de navigation dans toutes nos pages. Vous pouvez gonfler une disposition de cadre avec le fragment que vous voulez et toujours avoir 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 rend le code redondant. Il s'agit d'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.
la source
Je sais que cela a déjà été discuté à mort, mais j'aimerais ajouter quelques points supplémentaires:
Les frags peuvent être utilisés pour remplir les
Menu
s et peuvent gérer lesMenuItem
clics seuls. Donnant ainsi des options de modulation supplémentaires pour vos activités. Vous pouvez faire des trucs ContextualActionBar et ainsi de suite sans que votre activité ne le sache et peut fondamentalement le découpler des trucs de base que gère votre activité (Navigation / Paramètres / À propos).Un Frag parent avec Frags enfant peut vous donner d'autres options pour moduler vos composants. Par exemple, vous pouvez facilement échanger des Frags, placer de nouveaux Frags dans un téléavertisseur ou les supprimer, les réorganiser. Le tout sans que votre activité en sache quoi que ce soit, se concentrant uniquement sur les choses de niveau supérieur.
la source
Fragments vit au sein de l'activité et a:
Considérez les fragments comme une sous-activité de l'activité principale à laquelle ils appartiennent, ils ne peuvent pas exister par eux-mêmes et peuvent être appelés / réutilisés encore et encore. J'espère que cela t'aides :)
la source
1.Pour utiliser un fragment?
la source
Un fragment vit à l'intérieur d'une activité, tandis qu'une activité vit seule.
la source