Aller au contenu

Série de View ou série d'Activity ?


Hervéé

Recommended Posts

Bonjour,

J'ai réalisé ma première petite appli androïd qui marche pas trop mal et j'en suis bien content.

Mais, maintenant, je m'assois et je PENSE.

Cette appli se compose d'une GUI simple, avec une unique Activity. Sur un évènement, je fabrique une nouvelle View, avec plein de sous-View dedans, et je l'affecte à mon activity. J'enchaine donc les Views. Mais je me dis qu'il serait peut être mieux de créer carrément une nouvelle Activity, pour mieux isoler les contextes ??

C'est à dire que, sur un onClic, je lancerais une nouvelle Activity depuis l'écouteur de l'activité précédente.

Qu'en pensez-vous, chers spécialistes ? Si oui, comment faut-il faire ? Quels sont les avantages et inconvénients des deux méthodes ?

Merci.

-- Hum, je crois que je me suis trompé de forum, puisque je viens de m'apercevoir qu'il y a un forum Activity Service... Si un gentil modérateur voulait bien me transférer mon message... avec toutes mes excuses.

Lien vers le commentaire
Partager sur d’autres sites

La notion d'Activity permet effectivement de séparer les différents écrans de l'application, et de gérer le cheminement entre ces écrans, Android 'stockant' les Activity d'une applicaton dans une pile, ce qui permet de gérer par ex. le retour (via le bouton back)

Dans le cas de ton application, est-ce que cela a un sens que l'utilisateur puisse revenir en arrière sur des écrans précédents ? qu'il puisse naviguer entre écrans ?

Lien vers le commentaire
Partager sur d’autres sites

Revenir en arrière, oui. Je mets même un bouton pour cela. Naviguer entre les écrans, peut être moins, mais tout est possible.

J'ai commencé à me poser ce genre de questions quand j'ai vu que lorsque on tournait l'android, l'Activity (ou le programme ? je sais pas très bien sur ce coup là) recommençait au début, et donc qu'il fallait que je mémorise/retrouve le contexte. Donc mon idée était que si chaque view était dans une unique activity c'était plus facile : le nombre d'états à gérer était moins grand. À moins qu'il y ait un truc qui m'ait échappé ?

Ce que je n'ai pas encore compris, aussi, est comment est-ce que l'on fait pour lancer une activity à partir d'une autre ?

Lien vers le commentaire
Partager sur d’autres sites

....

J'ai commencé à me poser ce genre de questions quand j'ai vu que lorsque on tournait l'android, l'Activity (ou le programme ? je sais pas très bien sur ce coup là) recommençait au début, et donc qu'il fallait que je mémorise/retrouve le contexte. Donc mon idée était que si chaque view était dans une unique activity c'était plus facile : le nombre d'états à gérer était moins grand. À moins qu'il y ait un truc qui m'ait échappé ?

....

je ne répond pas à ton premier poste mais plutôt mais plutôt au fait que l'activity est relancé quand tu fais tourner ton téléphone

en fait il existe une méthode pour empêcher ça

je ne me rappel pas très bien du code que j'avais trouvé et rajouté à mon appli et je n'ai pas mon code là sinon j'aurai fait un petit copier/coller

je ferais ça ce soir si tu n'as pas la réponse avant!!

l'idée c'est de rajouter une ligne au manifest pour qui liste des évènements du type retournement, affichage du clavier...

et quelque ligne de code dans ton activity qui dit que lorsque je reçois ces évènements je ne redémarre pas

Lien vers le commentaire
Partager sur d’autres sites

Je te remercie pour pas redémarrer, mais je préfère écrire les choses comme elles sont conseillées, et ne les empecher que si j'ai des raisons pour cela. Là j'ai pas d'autres raisons que mon ignorance actuelle, problème qui je l'espère pourra être résolu !

Lien vers le commentaire
Partager sur d’autres sites

Ce que je n'ai pas encore compris, aussi, est comment est-ce que l'on fait pour lancer une activity à partir d'une autre ?

On utilise la méthode startActivity (ou startActivityForResult, suivant les besoins)

   Intent intent = new Intent().setClass(this, EditCarActivity.class);
   startActivity(intent);

La difficulté de l'utilisation correcte des Activity, c'est de bien intégrer la notion de pile d'Activity. Quand on affiche une nouvelle Activity à partir d'une autre, on 'empile' la nouvelle Activity au dessus de la précédente, qui reste instanciée en 'arrière-plan'. Et en utilisant le bouton back, on ferme l'Activity courante, et on réactive la précédente (on dépile). Et s'il n'y a plus d'Activity dans la pile, back a pour effet de quitter l'application et de revenir au Launcher.

Ne pas correctement appréhender cette notion de pile peut amener à implémenter une IHM au comportement assez peu compréhensible. J'ai l'exemple d'une application 'professionnelle', avec un seul écran avec onglets, où le basculement entre onglets est très clairement implémenté par l'appel d'une nouvelle Activity. Assez naturellement, on s'attend, via le bouton back, à quitter l'application, quel que soit l'onglet dans lequel on se trouve; mais non, le bouton back a pour effet de revenir (on dépile) sur tous les onglets par lesquels on est passé auparavant => pas très ergonomique

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...