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 faire pour modifier une variable a chaque lancement d'une activité ?


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club Avatar de PremiereMesure
    Homme Profil pro
    //
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : //

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Par défaut Comment faire pour modifier une variable a chaque lancement d'une activité ?
    Bonjour à tous.

    J'suis débutant dans le domaine et je cherche dans le cadre d'un exercice avec Android Studio la solution a un problème qui est surement très simple mais....

    En gros je cherche à par exemple afficher un chiffre dans un TextView a chaque lancement d'une Activity en partant de 0.
    Le première affichage on verrait 0 , on ferme on revient 1 et ainsi de suite...j'ai beau cherché partout je vois pas et j'ai l'impression que c'est évident.

    Si j'initialise int i = 0 et que j’incrémente à la fin , quand je vais ré ouvrir l'activité le i sera de nouveau égal a 0....



    Le problème le plus général est de mémoriser le score et le nom après une partie d'un Quizz dans une liste , après la fin d'une partie le score est enregistré à l'index 0 de mon ArrayList qui figure sur l'activité Classement , mais après une deuxième partie avec un nom et un score différent , je n'arrive pas a inscrire le couple nom/score à l'index 1. Je n'arrive à afficher qu'un seul classement qui est celui de la dernière partie effectué et qui vient écraser la valeur enregistré précédemment.

    Je sais pas si je suis très clair , mais ça me prend bien la tète.

    Merci pour vos réponses

  2. #2
    Membre très actif Avatar de jmonga
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Congo-Kinshasa

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 175
    Par défaut
    Une activité a un cycle de vie.
    c'est à dire que lorsque tu fermes l'application, tous qui étaient sauvegarde dans les variables sont perdus.
    Donc ce n'est pas un bon moyen pour sauvegarder la valeur de la variable qui s'incrementera.

    Alors il ya plusieurs solutions qui s'offrent à toi.

    - Soit tu utilises un fichier pour sauvegarder la valeur.

    - Soit une base de données.

    - Soit encore le SharedPreference d'android

  3. #3
    Membre du Club Avatar de PremiereMesure
    Homme Profil pro
    //
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : //

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Par défaut
    Tout d'abord merci pour ta réponse.


    Dire que j'ai passé 2 jours a réfléchir la dessus....J'avais pensé a SharedPreferences ( parce que c'est la seule méthode que je sais appliquer pour l'instant dans celles que tu m'indiques ) mais j'arrivais pas a le mettre en place. Je vais ressayer.


    Bon j'ai réussi en 10min...
    Si ça peut servir à quelqu'un.....

    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 RankingActivity extends AppCompatActivity {
     
     
        private TextView mRankingText;
        private SharedPreferences mPreferences;
        private int i;
     
     
     
        public static final String PREF_KEY_INDEX_RANKING = " PREF_KEY_INDEX_RANKING";
     
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_ranking);
     
     
            mRankingText = (TextView) findViewById(R.id.activity_ranking_ranking_text);
     
     
            mPreferences = getPreferences(MODE_PRIVATE);
     
     
             int indexRanking = mPreferences.getInt(PREF_KEY_INDEX_RANKING,0);
     
     
            if ( indexRanking == 0){
                i = 0;
            } else {
                i = mPreferences.getInt(PREF_KEY_INDEX_RANKING,0);
            }
     
            String j = Integer.toString(i);
            mRankingText.setText(j);
     
            i++;
            mPreferences.edit().putInt(PREF_KEY_INDEX_RANKING,i).apply();
     
     
            }
        }
    Encore merci !

  4. #4
    Membre du Club Avatar de PremiereMesure
    Homme Profil pro
    //
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : //

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Par défaut
    J'ai juste une petite question supplémentaire , je préfère pas recréer un nouveau sujet pour ça c'est un peu dans la même veine.
    Comment faire pour que dans le textview soit affiché au premier lancement 0 , puis 0 1 , puis 0 1 2 etc... ?


    Parce que quand je cherche à afficher mon le contenu de mon ArrayList avec par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
            for ( int i =0;i<ranking.size(); i++){
                String str = ranking.get(i).getFirstName();
                mRankingText.setText(str);
    }
    ca m'affiche uniquement le dernier prénom recu par l'ArrayList. Comment je fait pour que ca les affiche tous ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 476
    Par défaut
    Il faut que tu passes par un StringBuilder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < ranking.size(); i++)
    {
        builder.append (ranking.get(i).getFirstName());
    }
     
    // il faut sortir l'édition du textview de la boucle
    mRankingText.setText(str);

  6. #6
    Membre du Club Avatar de PremiereMesure
    Homme Profil pro
    //
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : //

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Par défaut
    Ok , je connaissais pas cette façon de faire , je vais regarder. En effet ça fonctionne , merci beaucoup

    Mais est ce que tu pourrais m'expliquer si t'as 2 min pourquoi ce que je faisais ne marche pas , je comprend pas pourquoi cela n'affichait que le dernier nom. J'ai un peu de mal a comprendre pourquoi certains trucs marchent avec Java dans la console et pas avec Android comme ici l'affichage du contenu d'un ArrayList.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2007, 12h57
  2. Comment faire pour modifier une JTable
    Par jlenoir dans le forum Composants
    Réponses: 5
    Dernier message: 12/02/2007, 12h50
  3. Réponses: 4
    Dernier message: 05/01/2006, 09h01
  4. [C#] A l'aide! comment faire pour modifier un noeud?
    Par irnbru dans le forum Windows Forms
    Réponses: 12
    Dernier message: 15/11/2005, 17h41
  5. Comment faire pour modifier une ligne dans une DBGrid?
    Par Nico62 dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2005, 12h24

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