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 :

Comment sauvegarder les objets trouvés par un utilisateur dans l'application même


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Par défaut Comment sauvegarder les objets trouvés par un utilisateur dans l'application même
    Bonjour à tous,

    Je suis débutant en programmation Android, je développe actuellement une application où l'utilisateur peut trouver différents objects, chaque objects sont similaires, ce sont des anneaux avec différentes couleurs.

    Dans JouerActivity (Activity1) l'utilisateur clique sur le bouton "rechercher" et il peut ou non trouver des objects, quand l'utilisateur trouve un anneau j'utilise dans le code un compteur comme par exemple anneauRouge++, anneauVert++ pour chaque type et un pour le total d'anneau nbAnneau++, afin de savoir combien d'objets il a trouvé. L'utilisateur peut ensuite cliquer sur le bouton "inventaire" où il peut voir son stock d'anneaux trouvés dans une seconde activité appelée StockActivity, cet inventaire est donc mît à jour par incrémentation des variables anneauRouge, anneauVert, nbAnneaux, etc.

    Mais si l'utilisateur ferme l'application et reviens dessus plus tard tous les objects ont disparu et il doit recommencer sa recherche.
    Ainsi ma question est de savoir comment je pourrais sauvegarder chaque object trouvé? Dans les fichiers interne du téléphone? J'ai voulu faire une base de données mais je trouve que ce n'est pas efficace et puis je n'y arrive pas, et l'affichage sera contraignant car dans une autre activité.

    Merci beaucoup pour votre aide.
    Pikkoro

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Il y'a plein de solutions possibles :

    - Fichier
    - SharedPreference
    - Base de données
    - Serveur distant
    - ...

    Voir https://developer.android.com/guide/...a-storage.html pour le détail de chaque solution

    A toi de choisir ce qui te correspond le mieux.

    J'ai voulu faire une base de données mais je trouve que ce n'est pas efficace et puis je n'y arrive pas
    Dur de juger de la pertinence d'une solution si tu n'as pas réussi à la mettre en place non ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Par défaut
    Ok merci Grunk pour ta réponse,
    Du coup je voulais utiliser les fichiers internes du téléphone afin de sauvegarder les valeurs de mes variables de type int.
    Donc dans un premier temps je les écris dans une activity1 et je les lis ensuite dans une activité2.
    Crois tu que ça serait approprié ou pas?

    J'aimerais faire un peu comme dans ce tuto sauf que je ne veux pas sauvegarder ce que j'écris dans un editText.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    public class MainActivity extends ActionBarActivity {
        EditText editText;
        TextView textView;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            editText = (EditText)findViewById(R.id.editText);
            textView=(TextView)findViewById(R.id.textView);
        }
     
        public void read(View view) {
            try {
                FileInputStream fileInputStream= openFileInput("myText.txt");
                InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                StringBuffer stringBuffer = new StringBuffer();
                String lines;
                while ((lines=bufferedReader.readLine())!=null) {
                    stringBuffer.append(lines+"\n");
                }
                textView.setText(stringBuffer.toString());
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
        public void write(View view) {
            String Mytextmessage  = editText.getText().toString();
            try {
                FileOutputStream fileOutputStream = openFileOutput("myText.txt",MODE_PRIVATE);
                fileOutputStream.write(Mytextmessage.getBytes());
                fileOutputStream.close();
                Toast.makeText(getApplicationContext(),"Text Saved",Toast.LENGTH_LONG).show();
                editText.setText("");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    J'aimerais sauvegarder la valeur de mes variables (exemple: anneauRouge) et l'afficher dans un TextView dans la seconde activité.
    Je ne sais pas si je pourrais reprendre ce code pour faire cela?
    Qu'en penses tu ?

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Oui le principe est le même.

    Il y'a pas forcément de mauvaise solution , il faut juste utiliser celle qui correspond le mieux à ton besoin.


    Dans ton cas je ferais une classe qui gère tous les scores et je serialiserais la classe dans un fichier quand je quitte l'activité et je la deserialiserais quand j'arrive dans une activité.
    De cette manière tu te retrouve avec un objet pret à l'emploi , pas besoin de parser le fichier.
    Tant que tu utilise des types simple dans ta classe c'est à mon avis le plus simple.

    Un truc un peu dans le genre :

    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
    public class GestionScore {
        public int anneauRouge;
        public int anneauVert;
     
        public void save(String filename) {
            FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
            ObjectOutputStream os = new ObjectOutputStream(fos);
            os.writeObject(this);
            os.close();
            fos.close();
        }
        public static SimpleClass load(String file) {
            FileInputStream fis = context.openFileInput(fileName);
            ObjectInputStream is = new ObjectInputStream(fis);
            SimpleClass simpleClass = (SimpleClass) is.readObject();
            is.close();
            fis.close();
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    GestionScore mScore = GestionScore.load("monfichier");
    score.anneauRouge++;
    // puis dans le onPause
     
    mScore.save("monfichier");
    Le code est sans doute pas fonctionnel dans l'état , mais l'idée général est là
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Par défaut
    Ok je vois un peu le truc merci.
    Euh juste une chose en fait mes Anneaux sont déjà dans une classe Anneaux.java du coup (classe objet), tu penses qu'il serait mieux que j'intègre la gestion du score et la sauvegarde dans les fichiers directement dans cette classe plutôt que d'en créer une autre ?

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Si tu as déjà une classe rien ne sert d'en recréer une utilise la
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2009, 13h59
  2. Réponses: 2
    Dernier message: 15/09/2009, 13h59
  3. Réponses: 2
    Dernier message: 22/02/2009, 13h02
  4. Comment sauvegarder un objet shape de type msopicture dans une variable
    Par PascalCos dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/07/2007, 18h35
  5. Page personnalisée par l'utilisateur dans l'application
    Par Rodrigue dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/05/2005, 17h45

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