2010-07-08 4 views
7

Je travaille sur une application Android qui a plusieurs écrans, l'utilisateur devra naviguer entre et je suis curieux de savoir quelles sont les meilleures pratiques lorsque vous passez d'un écran à l'autre. Je suis déchiré entre créer une nouvelle activité pour chaque écran et simplement changer la vue (setContentView (R.layout.whatever)). Les écrans partagent tous au moins quelques valeurs variables, donc je penche pour changer de vue et utiliser des variables de niveau classe, mais je crains qu'une seule activité puisse devenir très grande et confuse avec la logique pour plusieurs écrans dans un seul fichier. Je voudrais garder le code propre et séparé, mais je ne veux pas non plus passer plusieurs variables entre les vues si cela n'est pas nécessaire. Étant nouveau dans le développement Android, j'espère que des membres plus expérimentés de la communauté pourront partager leurs idées et me laisser savoir comment le gérer.Android - Activités vs Vues

Merci!

Note: Je n'avais pas prévu d'utiliser un viewflipper. Ma pensée était d'utiliser un événement de clic de bouton, puis appelez setContentView() à une nouvelle vue pour la page que je voulais mettre en place ensuite. Exemple: Mon application démarre en utilisant R.layout.main comme vue. L'utilisateur clique sur le bouton Aide et appelle une méthode qui exécute setContentView (R.layout.help); pour afficher l'écran d'aide au lieu de passer à une activité d'aide.

Répondre

9

Vous devez utiliser une activité par écran car cela permettra d'utiliser au mieux le cadre et de permettre au système d'exploitation de supprimer sélectivement les écrans si les choses se gâtent.

Si vous avez une seule activité et que les ressources sont limitées, le système d'exploitation a deux choix; Tuez tout ou ne tuez rien, et si l'utilisateur n'utilise pas votre application, il est probable qu'il va tout tuer. Si vous utilisez une activité par écran, le système d'exploitation peut tuer certains des écrans que l'utilisateur n'a pas visités pendant un certain temps, tout en permettant aux autres de rester actifs, ce qui permet à l'utilisateur d'y revenir rapidement. En ce qui concerne le partage des variables et des valeurs, vous pouvez utiliser la base de données SQLite ou les librairies SharedPreferences pour les transmettre si elles sont largement partagées ou utiliser les méthodes putExtra dans Intent si elles ne sont utilisées que d'un écran à l'autre. .

+1

Donc, si vous avez un jeu avec trois écrans: Playboard, options et enregistrements; vous voulez dire que nous devrions avoir 3 activités? Vraiment? Je n'appellerais pas un écran d'enregistrements "une activité"! :-( – cibercitizen1

+1

Lorsque l'utilisateur regarde les enregistrements, ils ne jouent pas sur le plateau de jeu ou sélectionnent parmi les options, donc oui, l'écran des enregistrements serait une activité distincte. –

0

Si vous avez des variables que vous réutiliserez, créez une classe de base pour elles, que vous allez étendre. Ceci peut être une activité personnalisée qui s'étend à Activity.

Pour autant que je sache, vous devez créer des activités séparées pour chaque vue, seules quelques situations peuvent être traitées par viewflippers.

+0

Je peux avoir mal compris, mais je ne prévoyais pas d'utiliser un viewflipper. J'ai ajouté une note à ma question initiale pour (je l'espère) m'expliquer plus clairement. – Mike

Questions connexes