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 :

PutExtra d'un entier


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Mars 2018
    Messages : 38
    Par défaut PutExtra d'un entier
    Bonjour a tous,

    Dans le cadre du developpement d'une application perso, j'ai une question concernant le passage de variable d'une activité à une autre.
    Je souhaite passer un entier d'un écran à un autre tout en me laissant la possibilité d’interagir avec l'entier dans le code de chaque écran.

    Ici l'entier "penalite" :

    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
     
    public class VueEscape2  extends  Activity
    {
     
        Chronometer simpleChronometer;
        long timer;
        int penalite = 0;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            {
                setContentView(R.layout.escape2);
                Button START2;
                START2 = (Button) findViewById(R.id.START2);
     
                simpleChronometer = (Chronometer) findViewById(R.id.simpleChronometer);
     
                START2.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        simpleChronometer.setBase(SystemClock.elapsedRealtime());
                        simpleChronometer.start();
                        long timer=simpleChronometer.getBase();
                        Intent ActiviteEscape21 = new Intent(VueEscape2.this, VueEscape21.class);
                        ActiviteEscape21.putExtra("chrono", timer);
                        ActiviteEscape21.putExtra("penalite", penalite);
                        startActivity(ActiviteEscape21);
                    }
                });
            }
        }
    }
    Dans l'écran suivant je récupère "penalité"

    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
     
    public class VueEscape21  extends  Activity
    {
     
        Chronometer simpleChronometerfille;
     
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            {
                setContentView(R.layout.escape21);
                simpleChronometerfille = (Chronometer) findViewById(R.id.simpleChronometer);
                simpleChronometerfille.start();
     
                Intent Test = getIntent();
                long timer = Test.getLongExtra("chrono", 0);
                int penalite = Test.getIntExtra("penalite", 0);
                simpleChronometerfille.setBase(timer);
     
                Button next;
                next = (Button) findViewById(R.id.next);
                next.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        long timer=simpleChronometerfille.getBase();
                        Intent ActiviteEscape22 = new Intent(VueEscape21.this, VueEscape22.class);
                        ActiviteEscape22.putExtra("chrono", timer);
                        ActiviteEscape22.putExtra("penalite", penalite);
                        startActivity(ActiviteEscape22);
                    }
                });
     
            }
        };
     
    }
    Mon problème est ici que ce code ne compile pas. En effet, on me demande de déclarer penalité en FINAL.
    Or en faisant ceci il m'est impossible de jouer avec les variable sur cet écran...
    Quelqu'un peut-il m'aider ?

  2. #2
    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
    Salut,

    Le compilateur t'oblige à déclarer ta variable en final car tu l'as transmet dans un Listener de bouton, donc il s'assure que sa valeur reste constante le temps de l'action du listener.

    Ce que je ferais : créer une nouvelle variable, final celle ci, qui reprend la valeur de ta pénalité.

    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
     
    public class VueEscape21  extends  Activity
    {
     
        Chronometer simpleChronometerfille;
     
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            {
                setContentView(R.layout.escape21);
                simpleChronometerfille = (Chronometer) findViewById(R.id.simpleChronometer);
                simpleChronometerfille.start();
     
                Intent Test = getIntent();
                long timer = Test.getLongExtra("chrono", 0);
                int penalite = Test.getIntExtra("penalite", 0);
                simpleChronometerfille.setBase(timer);
    
                final int newPenalite = penalite; 
     
                Button next;
                next = (Button) findViewById(R.id.next);
                next.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        long timer=simpleChronometerfille.getBase();
                        Intent ActiviteEscape22 = new Intent(VueEscape21.this, VueEscape22.class);
                        ActiviteEscape22.putExtra("chrono", timer);
                        ActiviteEscape22.putExtra("penalite", newPenalite);
                        startActivity(ActiviteEscape22);
                    }
                });
     
            }
        };
     
    }

    Après, si tu transfères ta pénalité sur tout plein d'écran, j’opterais plus pour une variable static dans la 1ere activité (VueEscape2 par ex), que j'appellerai et modifierai au besoin.

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Plutôt partir sur une valeur stockée dans les SharedPreferences, je pense.
    Elle est stockée et persistée, répondra aux contraintes de pression mémoire et permettra d'éviter un static qui est un poison dans les libération de Context.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2018
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 63
    Par défaut
    Effectivement, si tu as peu d'informations à stocker, part sur l'utilisation d'une "SharedPreferences",
    ça permettra à tes données d'être persistantes et de les retrouver avec différentes clés.

    Tout est ici : https://developer.android.com/traini...eferences.html

Discussions similaires

  1. [8086] Affichage d'un entier de 32 bits
    Par elNINIo dans le forum Assembleur
    Réponses: 12
    Dernier message: 10/05/2003, 20h33
  2. FormatFloat pour les entiers !?
    Par Lung dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2003, 15h20
  3. format entier
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 20/03/2003, 09h18
  4. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  5. Réponses: 4
    Dernier message: 05/06/2002, 12h15

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