-
Fragment vs Activity
Bonjour,
je développe une petite appli histoire de me former.
Le concepte meme d activity est assez floue je trouve, c est un ecran..Masi en fait ca peut etre un ensmble de fragments qui sont aussi des écrans...
du coup je ne sais pas trop comment decider de la meilleure maniere de developper mon appli.
je suis parti sur une activity qui lance un fragment suivant le resultat remonté par le fragment courant, j utilise la bibliotheque android.support.v4.widget.DrawerLayout pour avoir mon drawer a gauche.
Je pense même utiliser un headless fragment avec un setRetainInstance() pour "stocker" mes infos ou faire tourner mes requetes http en background...
à votre avis est ce que je me plante completement et je devrais faire des activity bien distinctes en sauvegardant l etat de mes activity, les données (pas grand chose au passage) en sqllite ...
je sais pas trop
Merci
-
bonjour,
je vais tenter de répondre clairement (et sans trop me tromper).
une activity c'est une fenêtre, qui contient des vue, des fragments,...
un fragment contient des vue, moi je le vois comme un groupe de vue.
l'avantage d'un fragment est qu'il peut être utilisé plusieurs fois en le codant une seule fois, petit exemple:
dans mon application, je vais avoir plusieurs fois des radio bouton, un textview, et un bouton qui vont être identiques.
donc, ces éléments je vais les mettre dans un fragments.
j'aurais donc un fragment qui aura des radio bouton, un textview, et un bouton.
dans mes activity, quand je vais devoir mettre ces radio buton, textview et bouton, plutôt que mettre chacune de ses vue dans mon activity, je vais mettre mon fragment.
comme ça, je n'ai pas besoin de refaire le code pour afficher ces éléments NI le code pour les traitements (listener clic bouton,...), je le fait une fois et c'est tout.
j’espère avoir été assez clair (pas évident a l’écrit).
pour la sauvegarde de l'état des activity, si c'est juste conserver les valeur affichée (texte d'un textview...) et les avoir si tu reviens sur ton activity, android le fait tout seul.
si c'est pour les passer a ton autre activity il faut les mettre dans l'intent grâce au setextra.
si c'est pour les conserver pour une prochaine utilisation de l'application et qu'il n'y a pas grand chose, il vaut mieux passer par des sharedpreferences que par une bdd.
voilou.
si je suis pas assez clair n’hésite pas a demander.
-
Merci pour ta réponse, surtout les sharedpreferences je connais pas , je suis novice en la matiere.
J ai bien vu a quoi servaient les fragments dans les problemes de fragmentations (j ai un fragment qui envoit vers un autre pour les smartphone par exemple, ou les 2 en mm temps pour les tablettes) , ça c est tres simple a comprendre,
je pense que ce que je ne comprends pas c est pourquoi on développe une appli avec plusieurs Activity plutôt que des fragments ...
A mon sens ça se vaut largement
-
L'activity *EST* l'application au sens "desktop" du terme.
Il faut voir chaque activity comme des applications indépendantes qui s'appellent mutuellement (par le biais des Intent).
L'"application" (au sens d'android) est un "package" qui regroupe des activity, des services, des receivers, etc...
Prenons l'exemple de la bibliothèque d'images... ("Gallerie") Celle-ci va avoir au moins deux activité indépendantes: le browsing des images (affichage en thumbnails), et l'affichage des images (une image à la fois).
Si une application possède une image, elle peut simplement lancer un intent ACTION_VIEW avec l'url de son image, et, magie d'android, la Gallerie sera lancée, avec l'activité d'affichage des images.
Si une application veut récupérer une image, elle peut simplement utiliser un intent ACTION_PICK avec comme type "image", et hop, la Gallerie d'android se lancera avec les thumbnails. Sauf que ce sera dans une version "selection".
Du coup, notre application Gallerie a au moins 2 activités indépendantes, et probablement 2 fragments (le passage de l'un à l'autre dépendant de l'Intent, ou d'un appui long, ou autre) pour l'affichage des thumbnails.