856 votes

Dilemme: quand utiliser des Fragments vs Activités:

Oui je sais que ça sonne un peu stupide question, et je sais aussi qu' Activities sont conçus pour représenter un seul écran de mon application. Alors qu' Fragment sont conçus pour être réutilisable de l'INTERFACE utilisateur de la partie avec la logique incorporé à l'intérieur d'eux.

Jusqu'à il n'ya pas longtemps, j'ai développé une application, comme elle a dit qu'ils devraient être développés. J'ai créé un Activity pour représenter un écran de mon application et de l'utilisation Fragment habituellement, lorsque utilisé ViewPager ou Google Maps, rarement créé un ListFragment ou d'autres interfaces utilisateur qui peuvent être réutilisés plusieurs fois.

Récemment je suis tombé sur un projet qui ne contient que 2 Activities on est un SettingsActivity et un autre pour l' MainActivity. Alors que la mise en page de l' MainActivity est peuplée par de nombreux caché plein écran de l'INTERFACE utilisateur des fragments et un seul est représenté. Dans l' Acitivty logique il y a beaucoup d' FragmentTransitions entre les différents écrans de l'application.

Ce que j'ai aimé à propos de cette approche est que, parce que l'application utilise un ActionBar, il reste intact et ne pas se déplace avec le changement d'écran d'animation qui ce qui se passe avec Activity de commutation. Cela donne un plus à l'aise se sentir à ceux des transitions d'écran.

Donc je suppose que ce que je vous demande est de partager votre développement de manière à ce sujet, je sais que ça peut ressembler à une opinion fondée question au premier coup d'oeil mais je vois ça comme un Android design et de l'architecture de la question... Pas vraiment une opinion fondée.

Mise à JOUR (01.05.2014): Suite à cette présentation par Eric Burke, de Carré, (qui je dois dire que c'est une belle présentation avec un grand nombre d'outils utiles pour les développeurs android. Et je ne suis lié en aucune façon à Carré)

http://www.infoq.com/presentations/Android-Design/

et mon expérience personnelle à partir de ces quelques derniers mois, j'ai découvert que la meilleure façon de construire mes applications est de créer des groupes de fragments qui en est venu à représenter un flux dans l'application et de présenter tous ces fragments dans une Activity. Donc, fondamentalement, vous aurez le nombre de Activities dans votre application comme le nombre de flux. De cette façon, la barre d'action reste le même sur tous les flux d'écrans, mais est recréé sur la modification d'un flux qui fait beaucoup de sens. Comme Eric Burke etats-unis et je viens de réaliser ainsi, à la suite de la philosophie de l'âne de moins Activities possible n'est pas aussi bien que vous pourriez penser. Parce qu'il crée un désordre dans ce qu'il appelle le "Dieu" de l'activité.

307voto

sandalone Points 8326

Les Experts vous le diront: "Quand je vois l'INTERFACE utilisateur, je vais savoir s'il faut utiliser un Activity ou Fragment". Au début, cela n'aura pas de sens, mais dans le temps, vous allez réellement être en mesure de dire si vous avez besoin d' Fragment ou pas.

Il est une bonne pratique que j'ai trouvé très aidant pour moi. Il m'est apparu alors que j'essayais d'expliquer quelque chose à ma fille.

À savoir, imaginer une boîte qui représente un écran. Pouvez-vous charger un autre écran dans cette boîte? Si vous utilisez une nouvelle boîte de dialogue, vous avez à copier plusieurs éléments de la 1ère case? Si la réponse est Oui, alors vous devriez utiliser des Fragments, parce que la racine Activity peut contenir tous les éléments dupliqués afin de gagner du temps dans la création, et vous pouvez simplement remplacer les pièces de la boîte.

Mais n'oubliez pas que vous avez toujours besoin d'une boîte contenant (Activity) ou de vos pièces seront dispersées. Donc, une boîte avec des pièces à l'intérieur.

Prendre soin de ne pas abuser de la boîte. Android UX experts conseillent (vous pouvez les trouver sur YouTube) lorsque l'on doit charger explicitement un autre Activity, au lieu d'utiliser un Fragment (comme lorsque nous traitons avec le Tiroir de Navigation qui comporte des catégories). Une fois que vous vous sentez à l'aise avec les Fragments, vous pouvez regarder toutes ses vidéos. Même plus, ils sont obligatoires matériel.

Vous pouvez dès maintenant regarder votre INTERFACE utilisateur et de déterminer si vous avez besoin d'un Activity ou Fragment? Avez-vous un nouveau point de vue? Je pense que vous avez fait. :)

153voto

harikris Points 2074

Ma philosophie est la suivante:

Créer une Activité, seulement si c'est absolument absolument nécessaire. Avec la backstack disponibles pour commettre des tas de fragment de transactions, j'essaie de faire comme minimum d'Activités dans mon application que possible. Aussi, la communication entre les divers fragments, c'est beaucoup plus facile plutôt que d'envoyer des données en arrière-et-vient entre les activités.

L'activité transitions sont chers, non? Au moins je le crois - depuis l'ancienne activité, que d'être détruit/pause/arrêt, poussé sur la pile puis de la nouvelle activité doit être créé/commencé/reprise.

C'est un peu ma philosophie depuis des fragments ont été introduites.

71voto

android developer Points 20939

Eh bien, selon Google conférences (peut-être ici, je ne me souviens pas) , vous devriez envisager d'utiliser des Fragments chaque fois que c'est possible, car il rend votre code plus facile à maintenir et à contrôler.

Cependant, je crois que dans certains cas, il peut devenir trop complexe, comme l'activité qui héberge les fragments besoin pour naviguer/communiquer entre eux.

Je pense que vous devez décider par vous-même ce qui est le mieux pour vous. Il n'est généralement pas difficile de le convertir à une activité pour un fragment, et vice-versa.

J'ai créé un post sur ce problème pour ici, si vous souhaitez lire une autre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X