Question

Je commence une application Honeycomb qui aura une disposition de deux panneaux de base, un panneau sur la gauche pour le menu et l'autre sur la droite pour la fonctionnalité principale de chaque section.

Contrairement aux échantillons disponibles de l'API Fragments du contenu affiché sur le panneau de droite se compose d'une interface utilisateur complètement différente pour chacune des options de menu.

Il est tentant de simplement remplacer le fragment droit selon la section choisie, mais cela signifierait en utilisant une seule activité dans l'application entière, et cela ne bon son. De plus, le cycle de vie du fragment est lié à l'activité, donc pas de fragments seront tués jusqu'à ce que l'activité se fait tuer, ce qui entraîne beaucoup de fragments « vivants ».

Cependant, ayant une activité différente avec deux panneaux pour tous les moyens d'option de menu que le fragment utilisé pour le menu devra être ajoutée dans l'activité CHAQUE et sera soumis à dispositions incompatibles dans toutes les sections qui doivent avoir un menu.

Quelles sont les meilleures pratiques ici?

Était-ce utile?

La solution

Ce blog résume les raisons du choix des fragments sur les activités :

Activités intégrées via ActivityGroup étaient une bonne idée, mais ont toujours été difficile à traiter puisque l'activité est conçu pour être indépendant composant autonome au lieu de en interaction étroite avec d'autres Activités. L'API est beaucoup Fragment meilleure solution pour cela, et devrait être considéré comme un remplacement pour activités intégrées.

Stockage des données sur l'activité cas pourrait être accompli à travers Activity.onRetainNonConfigurationInstance (), mais cela est assez klunky et pas évident. Fragment remplace que mécanisme en vous permettant de conserver une toute instance Fragment juste en la fixation d'un drapeau.

Une spécialisation du fragment appelé DialogFragment il est facile de montrer une Dialog qui est géré dans le cadre du cycle de vie de l'activité. cela remplace d'activité des API « de dialogue ». géré

Une autre spécialisation de Fragment appelé ListFragment le rend facile à afficher une liste de données. Ceci est similaire à la ListActivity existante (avec peu plus de fonctionnalités), mais devrait réduire la question commune sur la façon de montrer a> liste avec d'autres données.

Les informations relatives à tous les fragments actuellement fixée à une activité est sauvé pour vous par le cadre dans le L'état de l'instance enregistrée de l'activité et restauré pour vous quand il redémarre. Cela peut réduire considérablement la quantité de état sauvegarder et de restaurer le code dont vous avez besoin pour vous écrire.

Le cadre a un support intégré pour la gestion d'un back-pile de Fragment des objets, ce qui rend facile à fournir comportement du bouton Retour intra-activité qui intègre l'activité existante retour pile. Cet état est également enregistré et restauré pour vous automatiquement.

Les fragments sont assez nouveau, donc au-delà de cet article, je ne suis pas sûr que vous allez trouver beaucoup de bonnes pratiques. Je pense que la décision que vous devez faire est-ce que mes interactions étroitement couplés et destinés à partager des données ou sont-ils représentent des composants seuls qui faire l'interaction pas beaucoup.


modifier, clarifier : Je pense que l'utilisation d'une seule activité pour une application n'est pas nécessairement une mauvaise décision. Il est vraiment une décision que vous devez faire en fonction de la fonctionnalité de votre application. Sur la base de l'article, une activité est autonome alors qu'un fragment est, en général, ne concerne que lorsqu'il est combiné avec d'autres fragments dans le cadre d'une activité. La situation que vous décrivez, avec des combinaisons de différentes activités est l'un des points de la douleur, ils ont conçu des fragments à résoudre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top