IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Héritage, sauvegarde et update des données


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut Héritage, sauvegarde et update des données
    Bonjour,
    Je ne sais pas comment m'y prendre pour réaliser la sauvegarde de mon objet...
    J'ai un objet qui fait partie d'une liste dans mon activité principale. Je peux accéder à une activité qui présente un détail de ce qui est affiché dans l'activité principale. Dans cette nouvelle activité je peux cliquer pour atteindre une troisième activité pour modifier les éléments de mon objet.

    Mais. Je ne sais pas comment remonter la pente pour sauvegarder l'objet. Je ne sais pas même pas si il ne l'ai pas déjà, sauvegardé.

    Dans le détail pour communiquer entre mes activités, je passe par un Intent dans lequel j'insère systématiquement un bundle comprenant entre autres l'objet sélectionné soit pour avoir plus d'info, soit pour modifier son contenu.
    Je suis maintenant en train de coder les retours de chaque activité par le Listener onActivityResult. Et je ne sais pas comment m'y prendre pour reprendre mon objet, et updater son contenu dans la liste dans laquelle il est sauvegardé.

    Je sais pas si j'arrive bien à me faire comprendre. Je suis néophyte en codage Android et avant cela je n'avais pas fait de java depuis au moins 3 ans.

    Si quelqu'un pouvait me donner au moins les éléments à chercher pour me faire comprendre un peu dans quel merdier je me lance, même si au mieux, je veux bien des solutions expliquées ^^, ça m'arrangerait beaucoup !
    En attendant je continu à chercher.

  2. #2
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Bonjour,
    As tu trouvé la solution à ton problème ?

    Christian,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  3. #3
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Bonjour,
    Je me résigne à passer par les intents pour avoir un retour de mes activités secondaires, mais bon, je trouve ça un peu lourd.
    Et je ne sais pas si j'utilise la bonne méthode en passant par l’événement onBackPressed pour faire un retour depuis mon activité de visualisation des détails.
    Et aussi, j'ai un problème sur la réception des données ^^' Je renvoie RESULT_OK et je reçois (en regardant pas-a-pas) une valeur null. Donc mystère.

    EDIT : Mon système fonctionne complètement mais je trouve encore le système de retour de données par intent assez lourde.

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    onBackPressed() ne devrait jamais être surchargé.

    Il n'y a absolument aucune raison de le faire (du moins sous Android).

    Tout dépend ensuite des détails de l'application.... mais voici mon avis pour réaliser ce que tu souhaites:

    D'abord les "activités":
    * ListActivity => affiche la liste des objets.
    * DetailActivity => affiche le détail d'un objet.
    * EditActivity => permet de modifier un objet (ou d'en créer un nouveau).

    Afin d'accéder aux données ces fragments utilisent un DAO (Data Access Object) qui contiendra alors au minimum 3 fonctions: listObjects, getObject et saveObject
    * ObjectDAO => sauvegarde, et lis les objets.


    Ensuite dans la gestion "logique" entre les éléments:

    ListActivity fait appel à ObjectDAO pour charger la liste des objets, et affiche celle-ci. Sur un click d'objet elle appelle DetailActivity avec un startActivityForResult. En paramètre l'identifiant de l'objet cliqué.
    Sur le résultat (onActivityResult), un seul objet à mettre à jour (éventuellement si OK est reçu au lieu de CANCEL) celui qui avait été cliqué !

    DetailActivity utilise ObjectDAO pour charger l'objet (par l'identifiant) et l'affiche. Sur un click sur un bouton "edit", elle appelle EditActivity avec un startActivityForResult. En paramètre l'identifiant de l'objet.
    Sur le résultat (onActivityResult), en cas de OK on recharge l'objet (par le DAO) (et on colle OK dans la réponse pour ListActivity). Exemple (attention pseudo code, ne compilera certainement pas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public void onCreate(Bundle data)
    {
        ...
        this.dao = new ObjectDAO(); // <= ou ce qui fait sens ici !  sans doute en passant "this" comme context !
     
        Intent i = getIntent();
        this.objectId = i.getExtraLong("identifier");
        loadObjectData();
    }
     
    private static final int EDITION = 82398;
    public void onActivityResult(int resultCode, int resultId, Intent result)
    {
        if (resultId == EDITION) {
            if (resultCode == RESULT_OK) {
                 setResult(RESULT_OK);
                 loadObjectData();
            }
        } else
            super.onActivityResult(resultCode,resultId,result);
    }
     
    public void onEditClicked()
    {
         Intent i = new Intent(this,EditActivity.class);
         i.setExtra("identifier",this.objectId);
         startActivityForResult(EDITION,i);
    }
     
    private void loadObjectData()
    {
         MyObject obj = this.dao.loadObject(this.objectId);
         ///
         ((TextView)findViewById(R.id.name)).setText(obj.getName()); // <= par exemple
    }

    Pour faire propre, on utiliserait des fragments au lieu des activités... D'autant qu'il ne fait pas toujours sens d'aller directement à l'édition d'un objet => DetailActivity pourrait alors utiliser le View ou le Edit fragment selon les besoins.

  5. #5
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Bonjour,
    Merci beaucoup pour ton message. J'avais eu vent de l'utilisation de DAO mais uniquement pour les bases de données, je t'avoue que je n'ai pas eu la bonne idée de l'utiliser ici, et ça me vexe ^^

    Je vais donc tenter ce que tu m'as dit, et m'intéresser également aux fragments, mais je ne sais pas à quel point j'arriverais à le mettre en place compte tenu de ce qui est déjà fait dans ma petite appli.

    Ton message m'a bien aider pour ce cas autant que pour ma culture et j'en remercie !

  6. #6
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Bonjour,

    Citation Envoyé par Uranne-jimmy Voir le message
    Je vais donc tenter ce que tu m'as dit, et m'intéresser également aux fragments, mais je ne sais pas à quel point j'arriverais à le mettre en place compte tenu de ce qui est déjà fait dans ma petite appli.
    Pour passer des activity aux fragments, rien de plus simple. Déjà (je pense), tu dois avoir une activity principale qui va gérer tes fragments car comme on le sait le fragment n'existe pas sans qu'il y aie une activity pour le manager. Et ensuite, si tu as trois activity, tu crées trois fragments pour chacune et le fichier de layout de chaque activity va être utilisé par le fragment qui remplace l'activity... D'une manière générale c'est ça. Dans ce cas, tu ne dois pas utiliser des fragments statiques mais plutôt dynamiques.

    Christian,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/09/2008, 18h21
  2. sauvegarde avec effacement des données précédentes
    Par cbleas dans le forum Administration
    Réponses: 2
    Dernier message: 15/09/2008, 11h03
  3. Réponses: 6
    Dernier message: 10/09/2008, 14h29
  4. updater des données dans mon fichier excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/02/2007, 16h01
  5. update des données
    Par LesLemmings dans le forum Visual C++
    Réponses: 2
    Dernier message: 30/11/2006, 09h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo