Je songe à implémenter un écran avec Activity
et tous les autres écrans avec Fragments
et managing all the fragments thru the activity
.
Est-ce une bonne idée? et ma réponse est NON mais je veux tout de même savoir plus clairement à propos de cette pensée.
Quels sont les avantages et les inconvénients de cette idée?
Note:
S'il vous plaît ne me donnez pas le lien pour fragment et activité.
EDIT:
Voici quelque chose sur les fragments et l'activité:
Avantages:
inconvénients:
Pourquoi devrions-nous utiliser des fragments si nous n'envisageons pas de comprimés? Quelle est la différence de temps de départ entre activité et fragment?
Cela dépend de l'application que vous créez. J'ai créé plusieurs applications en utilisant les deux approches et je ne peux pas dire qu'une façon est toujours meilleure que l'autre. La dernière application que j'ai créée, j’utilisais l’approche unique Activity
et une navigation de style Facebook. Lors de la sélection d'éléments dans la liste de navigation, je mets à jour un seul conteneur Fragment
afin d'afficher cette section.
Cela dit, avoir un seul Activity
introduit également beaucoup de complexités. Supposons que vous ayez un formulaire de modification et que, pour certains des éléments que l'utilisateur doit sélectionner ou créer, il soit obligé d'accéder à un nouvel écran. Avec les activités, nous appelions simplement le nouvel écran avec startActivityForResult
, mais avec Fragments
, il n’existait rien de tel que vous finissiez par stocker la valeur sur le Activity
et par la modification principale. fragment vérifie le Activity
pour voir si les données ont été sélectionnées et doivent être affichées à l'utilisateur.
Ce que Aravind dit à propos de rester collé à un seul type Activity
est également vrai, mais pas vraiment limitant. Votre activité serait une FragmentActivity et tant que vous n'avez pas besoin d'un MapView
, il n'y a pas de réelle limitation. Toutefois, si vous souhaitez afficher des cartes, vous pouvez le faire, mais vous devez modifier la bibliothèque de compatibilité Android pour que FragmentActivity
s'étend MapActivity
. ou utilisez le le disponible publiquement Android-support-v4-googlemaps .
En fin de compte, la plupart des développeurs que je connais qui ont emprunté la route Activity
sont retournés à plusieurs activités pour simplifier leur code. Sur le plan de l’interface utilisateur, sur une tablette, vous êtes parfois bloqué avec un seul Activity
juste pour réaliser l’interaction la plus folle que vos concepteurs proposent :)
-- MODIFIER --
Google a finalement publié MapFragment
dans la bibliothèque de compatibilité afin que vous n'ayez plus à utiliser le hack Android-support-v4-googlemaps. Lisez à propos de la mise à jour ici: Google Maps Android API v2
- EDIT 2 -
Je viens de lire ce billet sur l’état moderne (2017) des fragments et je me suis souvenu de cette réponse ancienne. Je pensais partager: Fragments: la solution à tous les problèmes d’Android
Je suis sur le point de terminer un projet (5 mois en développement), qui compte 1 activité et 17 fragments, tous en plein écran. Ceci est mon deuxième projet basé sur un fragment (le précédent était de 4 mois).
Pros
finish()
toutes les activités non visibles et créer la même logique de contrôle pour la navigation que je le ferais. avec des fragments. Autant le faire avec des fragments juste à cause de cela.Cons
Tout d’abord, quoi que vous fassiez, assurez-vous d’avoir une conception modulaire utilisant un modèle, une vue, un présentateur qui ne dépend pas beaucoup d’une activité ou d’un fragment.
Que fournissent vraiment les activités et les fragments?
Par conséquent, utilisez-les pour cela, SEULEMENT . Ils ont assez de responsabilités, ne les compliquez pas trop. Je dirais que même initier une TextView dans une activité ou un fragment est une mauvaise pratique. Il existe une raison pour laquelle les méthodes telles que Vue publique findViewById (int id) sont PUBLIC .
Maintenant, la question devient plus simple: ai-je besoin de plusieurs événements de cycle de vie et backstacks indépendants? Si vous pensez peut-être, utilisez des fragments. Si vous pensez ne jamais, n'utilisez pas de fragments.
À la fin, vous pourriez créer votre propre pile de pile et votre propre cycle de vie. Mais pourquoi recréer la roue?
EDIT: Pourquoi voter à la baisse? Les gens à but unique Chaque activité ou fragment doit pouvoir instancier un présentateur qui instancie une vue. Le présentateur et la vue constituent un module pouvant être interchangé. Pourquoi une activité ou un fragment devrait-il avoir la responsabilité d'un présentateur?
Vous pouvez contrôler vos fragments à partir d'une seule activité, car tous les fragments sont indépendants les uns des autres. Les fragments ont un cycle de vie (onPause
, onCreate
, onStart
...). En ayant un cycle de vie, les fragments peuvent réagir indépendamment aux événements, enregistrer leur état via onSaveInstanceState
et être restaurés (par exemple, lors d’une reprise après un appel entrant ou lorsque l’utilisateur clique sur le bouton Précédent).
Néanmoins, c'est une très bonne idée, comme si vous deviez créer une application, pour laquelle vous souhaitez afficher plusieurs vues. Grâce à cette idée, vous pourrez voir plusieurs fragments dans une seule vue.
Cela dépend de la conception de votre application. Supposons que si vous utilisez des onglets dans ActionBar dans l'agencement de conception, dans l'activité unique de l'application, des fragments peuvent être modifiés en un clic. Alors maintenant, vous avez une activité et supposez trois onglets dans la barre d’action et la vue des onglets fournis par les fragments, ce qui facilite la gestion de plus est également réalisable. Tout dépend donc du schéma de conception de votre application et de la manière dont vous prenez la décision de construire pour elle.
Avantages:
Les inconvénients:
Je pense que c'est une bonne idée, car utiliser différentes dispositions xml en fonction de la taille et de l'orientation actuelles de l'écran peut rendre l'application plus utilisable et réduire le besoin de publier plusieurs versions de votre application si vous envisagez de le faire pour les téléphones et les tablettes. Si votre application ne sera jamais utilisée par les tablettes et les téléphones, cela ne vaut probablement pas la peine.
Je suis partisan du report de tous les points de vue sur l'inflation en fragments pour offrir une meilleure flexibilité. Par exemple, avoir une seule activité d'atterrissage pour une tablette qui regroupe plusieurs fragments et réutiliser les mêmes fragments sur un téléphone pour afficher un écran par fragment. Cependant, dans la mise en œuvre du téléphone, j'aurais une activité distincte pour chaque écran. Les activités n’auraient pas trop de code car elles se remettraient immédiatement à leur homologue fragmentée pour voir l’inflation.
Je pense que c'est une mauvaise idée pour la mise en œuvre du téléphone de devoir passer à une activité d'atterrissage unique lorsque des onglets ou un menu coulissant sont introduits, car la navigation dans les onglets ou les menus donne simplement lieu à un nouvel écran.