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 :

Conserver valeurs après fermeture


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut Conserver valeurs après fermeture
    Bonjour, je souhaite faire une appli toute bête (une liste de courses) avec des checbox et un champs texte, dans le style :
    Nom : Capture.PNG
Affichages : 2258
Taille : 4,9 Ko

    Seulement à chaque fermeture il perd les valeurs.

    En fait avant j'utiliser Windev Mobile et il y avait une propriété "Mémoriser la valeur" qui faisait très bien le boulot, mais sur Android Studio je ne trouve rien de similaire. Visiblement il faut écrire un fichier .txt avec les valeurs et le lire à l'ouverture... Il n'y à pas plus simple ???

    Sinon, pouvez vous m'expliquer clairement le procédé ? Vous aurez compris je suis un banbi sur Android, j'ai fais un site en PHP donc j'ai une idée du processus :
    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
     
    //A l'ouverture 
    -Lire le fichier txt
    -Mettre toute les valeurs dans un array (ou une liste)
    -Utiliser les valeurs de l'array pour afficher les champs
     
    //A chaque modif
    -Récuperer les valeurs de tous les champs dans l'ordre dans un array
    -Ré-écrire le fichier txt avec les valeur contenu dans l'array séparer par un caractère
     
    //Fichier txt
    true @ false @ blablabla blabla
    //Les @ marques la fin d'une valeur
     
    //Array
    array[0] = "true";
    array[1] = "false";;
    array[2] = "blablabla blabla";
    mais la doc en français est très rare et souvent trop technique. Merci de votre aide

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Il faudrait savoir ce que tu entend par "fermeture".

    Si tu souhaite garder les données par exemple quand ton activité est détruite en dehors d'un cas normal (le système à besoin de ressource) il y'a une solution très simple qui consiste à implémenter onSaveInstanceState et onRestoreInstanceState dans ton activity :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        savedInstanceState.putString(COMMENTAIRE, mComment);
     
        super.onSaveInstanceState(savedInstanceState);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
     
        mComment= savedInstanceState.getInt(COMMENTAIRE);
    }
    Tout un article sur le sujet : http://developer.android.com/trainin...ecreating.html

    Si au contraire tu as besoin que tes données survivent à une fermeture "normale" comme un retour d'utilisateur il faut implémenter une persistance de tes données.
    Ca peut être fait de plein de manière :

    - Fichier simple (txt , xml , json ...)
    - Shared preferences
    - Base de données (sqlite)
    Plus d'infos : http://developer.android.com/guide/t...a-storage.html
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta réponse, sur t'es conseil j'ai opter pour les Shared preferences.

    J'ai voulu faire un p'tit test pour le champs texte mais ça ne marche pas il refuse de compiler
    Vue que l'anglais et moi somme brouiller, j'ai vraiment du mal à comprendre le problème mais j'ai l'impression qu'il faut importer quelque chose...

    Ensuite, mon test porte juste sur le fait de stocker une variable et de l'utiliser pour remplir le fichier.xml et n'ai rien trouvé sur comment récuperer la valeur du champs et l'utiliser pour définir ma variable.. please help

    Voila ce que j'ai :

    //fichier.java
    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
     
    package com.example.eljeronimooo.shopping;
     
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
     
    public class MainActivity extends AppCompatActivity {
     
     
        public final static String editText = "mon texte";
     
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString(editText, "texte par défaut");
        editor.commit();
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    //fichier.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        <EditText
    	...
            android:id="@+id/editText"
    	... />
    SVP soyez le plus explicite possible, traiter moi d'andouille (c'est surement mérité) mais je fais cette appli pour ma copine sinon je connait pas le java par contre j'ai fait un site en PHP. Donc j'avais espoir qu'avec un peu de persévérance et la magie d'internet j'aurais put rendre ma femme heureuse

    Je patauge grave, d’ailleurs si quelqu'un à de la semoule

  4. #4
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Citation Envoyé par eljeronimooo Voir le message
    Merci pour ta réponse, sur t'es conseil j'ai opter pour les Shared preferences.

    J'ai voulu faire un p'tit test pour le champs texte mais ça ne marche pas il refuse de compiler
    Vue que l'anglais et moi somme brouiller, j'ai vraiment du mal à comprendre le problème mais j'ai l'impression qu'il faut importer quelque chose...

    Ensuite, mon test porte juste sur le fait de stocker une variable et de l'utiliser pour remplir le fichier.xml et n'ai rien trouvé sur comment récuperer la valeur du champs et l'utiliser pour définir ma variable.. please help

    Voila ce que j'ai :

    //fichier.java
    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
    package com.example.eljeronimooo.shopping;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
    
        public final static String editText = "mon texte";
    
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString(editText, "texte par défaut");
        editor.commit();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    ...
    Bonsoir,

    Le code que j'ai colorié en rougene doit pas être écrit en déhors d'une méthode ou d'un block. Il doit être ramené dans la méthode onCreate() et

    également importer les différentes classes utilisées. Faire la même chose mais mieux, pourrait être ceci :
    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
    package com.example.eljeronimooo.shopping;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.content.SharedPreferences;
    import android.preference.PreferenceManager;
    
    public class MainActivity extends AppCompatActivity {
    
        public final static String editText = "mon texte";
    
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    /*********************************************/
           SharedPreferences.Editor editor = preferences.edit();
           editor.putString(editText, "texte par défaut");
           editor.commit();
    /***************************************/
        }
    }
    Ensuite, mon test porte juste sur le fait de stocker une variable et de l'utiliser pour remplir le fichier.xml et n'ai rien trouvé sur comment récuperer la valeur du champs et l'utiliser pour définir ma variable..
    Pour récupérer la valeur du champ, il te faut d'abord récupérer la zone de saisie comme une instance de la classe EditText, après quoi tu pourras lui appliquer

    les comportements que tu souhaite. La récupération de l'instance peut se faire ainsi( toujours dans une méthode ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EditText ed = (EditText) findViewById(R.id.editText);
    La récupération ou la modification du text peut respectivement se faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String text = ed.getText(); /*et*/ ed.setText("mon texte");
    Bien j'espère avoir été util !

    __salut !
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    ok merci pour vos réponses. Après de nombreux essais je laisse tombé je n'ai pas le temps. Merci quand même

  6. #6
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Citation Envoyé par eljeronimooo Voir le message
    ok merci pour vos réponses. Après de nombreux essais je laisse tombé je n'ai pas le temps. Merci quand même
    Ah gars, soit persévérant quand même, sinon ta copine va se fâcher ! :-)
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Franchement j'y ai passé deux jour et... rien qui marche . Là c'est ma virilité qui en jeux

    Mais si qq à une idée ou un bout de code à lâcher je pense que ça peut intéressé les amateurs, il me semble que c'est même la base de beaucoup d'appli. Dommage qu'il faille vraiment apprendre Java pour créer une appli toute bête... Je laisse ça aux grand

  8. #8
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Citation Envoyé par eljeronimooo Voir le message
    Franchement j'y ai passé deux jour et... rien qui marche . Là c'est ma virilité qui en jeux

    Mais si qq à une idée ou un bout de code à lâcher je pense que ça peut intéressé les amateurs, il me semble que c'est même la base de beaucoup d'appli. Dommage qu'il faille vraiment apprendre Java pour créer une appli toute bête... Je laisse ça aux grand
    Tu as peut-être raison mais il y a AppInventor qui permet au novice de créer des applications Android

    sans connaître aucun langage de programmation. C'est très pratique et tu peux l'essayer...
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

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

Discussions similaires

  1. Conserver les données d'un tableau après fermeture d'un classeur
    Par steph6499 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/02/2011, 10h41
  2. [AC-2007] conserver une valeur après la fermeture du formulaire la contenant
    Par glougloup dans le forum VBA Access
    Réponses: 4
    Dernier message: 24/06/2010, 16h58
  3. Réponses: 2
    Dernier message: 29/01/2010, 16h12
  4. Réponses: 2
    Dernier message: 27/05/2008, 16h28
  5. Réponses: 1
    Dernier message: 05/06/2007, 20h54

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