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 :

Problème pour actualiser une variable


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut Problème pour actualiser une variable
    Bonjour,

    dans ma classe SampleDownloaderActivity j'ai ce code
    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
    private static class XAPKFile {
            public boolean mIsMain;
            public int mFileVersion;
            public long mFileSize;
     
            XAPKFile(boolean isMain, int fileVersion, long fileSize) {
                mIsMain = isMain;
                mFileVersion = fileVersion;
                mFileSize = fileSize;
            }
    }
     
    public static int versionCode = 1000023;
    public static long size = 12970581L;
    private static XAPKFile[] xAPKS = {
                new XAPKFile(
                        true, // true signifies a main file
                        versionCode, // the version of the APK that the file was uploaded
                           // against
                        size // the length of the file in bytes
                )
    };
    si j'actualise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SampleDownloaderActivity.size = 18046788L;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void expansionFilesDelivered() {
        	for (XAPKFile xf : xAPKS) {
                setContentView(R.layout.test);
        	    TextView status = (TextView) findViewById(R.id.test_status);
        	    status.setGravity(Gravity.CENTER);
        	    status.setText(String.valueOf(xf.mFileSize));
            }
    }
    "status.setText(String.valueOf(xf.mFileSize));" n'est pas actualisé et garde la valeur "12970581L"

    merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    Les types primitifs sont passés par valeur et non pas par référence.
    C'est à dire que, lorsque tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private static XAPKFile[] xAPKS = {
                new XAPKFile(
                        true, // true signifies a main file
                        versionCode, // the version of the APK that the file was uploaded
                           // against
                        size // the length of the file in bytes
                )
    };
    Le constructeur de XAPKFile va prendre la valeur mFileSize en paramètre. Il va remplacer ce paramètre par sa valeur effective (ici 12970581L). Aucun lien n'est gardé avec cette variable.
    Si tu veux forcer ce comportement, il faut que tu utilise des objets.
    Un Long au lieu d'un long.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private static class XAPKFile {
            public boolean mIsMain;
            public int mFileVersion;
            public Long mFileSize;
     
            XAPKFile(boolean isMain, int fileVersion, Long fileSize) {
                mIsMain = isMain;
                mFileVersion = fileVersion;
                mFileSize = fileSize;
            }
    }
     
    public static Long size = new Long(12970581L);

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    long ou Long, ça ne change rien

    comment rendre ce tableau dynamique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private static XAPKFile[] xAPKS = {
                new XAPKFile(
                        true, // true signifies a main file
                        versionCode, // the version of the APK that the file was uploaded
                           // against
                        size // the length of the file in bytes
                )
    };

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    Citation Envoyé par pol2095 Voir le message
    tableau dynamique
    Qu'entends tu par tableau dynamique. Pour moi un tableau dynamique c'est une liste.
    Pourquoi ce tableau est-il static ? pourquoi n'y a-t'il q'un seul élément dans ce tableau ?

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    j'ai essayé avecce code dans SampleDownloaderActivity
    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
    public static long size = 12970581L;
    private static XAPKFile[] xAPKS;
    public static void changeXAPKFile() {
          xAPKS = new XAPKFile[] {
                new XAPKFile(
                        true, // true signifies a main file
                        versionCode, // the version of the APK that the file was uploaded
                           // against
                        size // the length of the file in bytes
                ),
                new XAPKFile(
                        false, // true signifies a main file
                        4002, // the version of the APK that the file was uploaded
                           // against
                        47852658L // the length of the file in bytes
                )
           };
    };
    et dans une autre classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SampleDownloaderActivity.size = 18046788L;
    SampleDownloaderActivity.changeXAPKFile();
    ça a l'air de fonctionner

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    Certes...
    Cela va simplement recréer le tableau à deux éléments à chaque fois que tu vas appeler la méthode changeXAPKFile()
    Ici le problème n'est pas vraiment en rapport avec Android mais plutôt avec le langage JAVA.

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

Discussions similaires

  1. Problème pour modifier une variable globale
    Par supertom dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 07/06/2007, 18h00
  2. Réponses: 17
    Dernier message: 01/06/2007, 08h16
  3. Problème pour inclure une variable à un objet
    Par yoyo29 dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/05/2007, 13h01
  4. Réponses: 2
    Dernier message: 14/04/2006, 18h40
  5. Probléme pour insérer une variable dans un champs
    Par BOUTRAIS dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 22h45

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