Pourquoi utiliser des fragments Android?

15

J'ai lu la documentation et d' autres fils de discussion sur ce sujet et je ne me sens pas vraiment convaincu; Je ne vois pas clairement les limites d'utilisation de cette technique.

Les fragments sont désormais considérés comme une meilleure pratique ; chaque activité doit être essentiellement un support pour un ou plusieurs fragments et ne pas appeler directement une mise en page.

Des fragments sont créés afin de:

  1. permettre Activityd'utiliser de nombreux fragments, de changer entre eux, de réutiliser ces unités ... ==> le Fragmentdépend totalement de l' Contextactivité, donc si j'ai besoin de quelque chose de générique que je peux réutiliser et gérer dans de nombreuses activités, je peux créer mes propres dispositions ou vues personnalisées ... Je ne me soucierai pas de cette couche de développement de complexité supplémentaire que les fragments ajouteraient.

  2. une meilleure prise en charge à une résolution différente ==> OK pour les tablettes / téléphones en cas de long processus que nous pouvons afficher deux (ou plus) fragments dans la même activité dans les tablettes, et un par un dans les téléphones. Mais pourquoi utiliserais-je toujours des fragments ?

  3. gérer les rappels pour naviguer entre les fragments (c'est-à-dire: si l'utilisateur est connecté, je montre un fragment sinon j'en montre un autre). ===> Essayez juste de voir combien de bugs Facebook SDK Log-in ont à cause de cela, pour comprendre que c'est vraiment (?) ...

  4. considérant qu'une application Android est basée sur des activités ... Ajouter un autre cycle de vie dans l'activité serait mieux pour concevoir une application ... Je veux dire que les modules, les scénarios, la gestion des données et la connectivité seraient mieux conçus, en ce que façon. ===> Ceci est une réponse de quelqu'un qui a l'habitude de voir le SDK Android et Android Framework avec une vision Fragments. Je ne pense pas que ce soit faux, mais je ne suis pas sûr que cela donnera de bons résultats ... Et c'est vraiment abstrait ...

====> Pourquoi devrais-je compliquer ma vie, en codant plus, en les utilisant toujours? sinon, pourquoi est-ce une meilleure pratique si ce n'est qu'un outil pour certains cas? quels sont ces cas?

ahmed_khan_89
la source
1
Ce que vous demandez n'est pas clair, pourriez-vous s'il vous plaît résumer la question, peut-être en dessous de l'énumération des avantages supposés et de votre critique de chacun?
logc
J'ai ajouté une question détaillée.
ahmed_khan_89
Je suis perdu comme @logc. Comment géreriez-vous ces cas sans fragments?
neontapir
J'ai donné ce que je ferais sans Fragments: (1) créer des contrôles génériques personnalisés et les réutiliser où je veux (2) en utilisant 2 activités et naviguer avec startActivityForResult, ou simplement changer entre les vues (afficher / masquer, gonfler / supprimer ...) sans coder autant ... (3) vous pouvez utiliser un rappel même dans des activités avec des vues (4) C'est une réponse abstraite que j'obtiens toujours quand je discute de ce sujet ... qui a besoin de plus d'explications ...
ahmed_khan_89
1
Hmm. Ce Q&R montre les limites de la conception de stackexchange où l'affiche originale choisit la "meilleure" réponse. (Par opposition à slant.co, où tout le monde vote.) Pas idéal pour une large question comme celle-ci. Ici, une question vague obtient une réponse acceptée qui correspond évidemment à ce que le demandeur voulait entendre. Si vous ne voyez aucune raison d'utiliser un fragment dans votre situation, alors ne le faites pas. Une meilleure question serait de demander le pour / le contre du fragment par rapport à l' activité . Et il y a beaucoup de fils sur ce sujet précis.
ToolmakerSteve

Réponses:

5

Le fragment est une section modulaire d'une activité qui a son propre cycle de vie, reçoit ses propres événements d'entrée, que vous pouvez ajouter ou supprimer pendant que l'activité est en cours d'exécution (un peu comme une "sous-activité" que vous pouvez réutiliser dans différentes activités)

Outre l'avantage évident d'utiliser des fragments, l'optimisation de l'interface utilisateur sur différents écrans, il vous permet de gérer le traitement en arrière-plan de l'activité sans composant d'interface utilisateur visible.

Maintenant...

====> Pourquoi devrais-je compliquer ma vie, en codant plus ... ??

Bien que cela soit recommandé, vous n'en avez pas besoin, sauf si vous prévoyez de contrôler le cycle de vie des éléments individuels et / ou de réutiliser l'état de la pile ou l'historique des vues précédentes.

Zeus
la source
5

S'il existe un cas d'utilisation de «passerelle» pour les sceptiques des fragments, ce sont probablement les dialogues. Les méthodes à long dépréciés showDialog(...), onCreateDialog(...)etc., étaient bien en ce que le cadre les appellerait pour détruire automatiquement et recréer vos boîtes de dialogue lorsque l'activité d' hébergement a été détruite et recréée. Si vous créez directement vos propres boîtes de dialogue, vous devez gérer tout cela vous-même. Mais si vous utilisez un DialogFragment, vous pouvez à nouveau laisser le framework les gérer pour vous. Dans ce cas, les fragments peuvent grandement simplifier votre codage.

Kevin Krumwiede
la source
1

J'ai posé cette question il y a plus d'un an.

J'utilise des fragments tous les jours et je le recommanderais.

Tout d'abord, je tiens à dire que l'utilisation de fragments n'est qu'une option et sera un réflexe à considérer une fois que vous commencerez à les utiliser.

Avantages:

1 / il permet de modulariser le code où vous pouvez avoir un flux complet en une seule Activité, en fragments séparés. Exemple: + liste / grille et détails, + connexion et enregistrement et oublier le mot de passe, + etc. C'est génial pour obtenir un code réutilisable, que vous pouvez toujours copier et coller dans différents projets.

2 / vous avez un nouveau cycle de vie, plein de tracas c'est vrai, mais aussi avec des avantages. Exemple: le fragment d'instance retenu est génial car il résout le problème de l'orientation.

3 / vous pouvez gérer le flux de vos fragments par les événements et les auditeurs de l'Activité.

4 / une pile de vos fragments dans votre Activité.

5 / utilisez la même barre d'action dans de nombreux écrans.

Et plein d'autres...

J'utilise toujours l'activité comme seul conteneur parfois, en particulier pour le boîtier de l'appareil photo. Certaines API Android et certaines bibliothèques tierces ne sont pas faciles à implémenter en fragments.

Eh bien, c'est comme n'importe quel outil, vous devez le considérer et juger par vous-même s'il vaut mieux l'utiliser dans un cas ou un autre.

J'espère que cela peut aider !!!

ahmed_khan_89
la source