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 :

Recuperer une variable a l'exterieur d'une classe


Sujet :

Android

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Par défaut Recuperer une variable a l'exterieur d'une classe
    Comment recuperer les variables [largeurEcran] et [longeurEcran] dans la classe marge?

    Avec le code ci-dessous [largeurEcran] et [longueurEcran] restent desesperement initialisees a 0 dans ma classe marge.
    Parcontre [longueurLigne] est bien a 250...

    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
     
    package michelt.fr.prog7;
     
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Display;
     
    public class MainActivity extends AppCompatActivity {
     
     
        public float longueurLigne = 250;
        public int largeurEcran;
        public int hauteurEcran;
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
            //taille de l'ecran
            Display ecran = getWindowManager().getDefaultDisplay();
            largeurEcran = ecran.getWidth();
            hauteurEcran = ecran.getHeight();
        }
     
     
        public class Marge {
     
            public float horizontale;
            public float verticale;
     
            public Marge(int l, int h) {
     
                largeurEcran = l;
                hauteurEcran = h;
                horizontale = (largeurEcran - longueurLigne) / 2;
                verticale = (hauteurEcran - longueurLigne) / 2;
            }
     
        }
     
    Marge marge = new Marge(largeurEcran, hauteurEcran);
     
    }

  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 : 40
    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
    GetWidth() et GetHeight() sont dépréciés.
    Essai donc plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;
    Ensuite, tu fais une innerclass a laquelle tu passes 2 paramètres , que tu réattribue ensuite au même variable de l'outerclass. C'est inutile et dangereux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Marge(int l, int h) {
        horizontale = (l - longueurLigne) / 2;
        verticale = (h - longueurLigne) / 2;
    }
    est amplement suffisant.

    Si longueur ligne est une constante définie la en tant que telle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final float LONGUEUR_LIGNE = 250;
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Par défaut
    Merci de prendre le temps de me répondre.
    J'ai modifié le code comme conseillé.

    Cependant cela ne répond pas a ce que je cherche.

    Avec le code ci-dessous le DEBUG me donne : I/DEBUG: 0....0....250.0
    Je ne récupére pas dans ma classe la valeur calculée avec largeurEcran = size.x; et hauteurEcran = size.y...

    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
     
    package michelt.fr.prog7;
     
    import android.graphics.Point;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Display;
     
    public class MainActivity extends AppCompatActivity {
     
     
     
        public static final float LONGUEUR_LIGNE = 250;
        public int largeurEcran;
        public int hauteurEcran;
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
         //   taille de l'ecran
            Display display = getWindowManager().getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            int largeurEcran = size.x;         
            int hauteurEcran = size.y;
        }
     
        public class Marge {
     
            public float horizontale;
            public float verticale;
     
            public Marge(int l, int h) {
                horizontale = (l - LONGUEUR_LIGNE) / 2;
                verticale = (h - LONGUEUR_LIGNE) / 2;
                android.util.Log.i("DEBUG", String.valueOf(largeurEcran + "...." + hauteurEcran + "...." + LONGUEUR_LIGNE) );
            }
        }
        Marge marge = new Marge(largeurEcran, hauteurEcran);
    }

  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 : 40
    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
    Tu créer ta classe marge en dehors de toute fonction il est donc normale que les valeurs que tu lui passes n'aient pas été intialisées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Marge marge = new Marge(largeurEcran, hauteurEcran);
    Devrait par exemple être à la fin du onCreate()
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Par défaut
    En mettant [Marge marge = new Marge(largeurEcran, hauteurEcran);] a la fin de mon Oncreate(), comme préconisé, les valeurs retournées par ma classe sont maintenant bonnes.
    Cependant dans cette situation ma classe [marge] n'est plus reconnue dans les autres fonctions...
    Conf:code ci-dessous: test() => marge n'est pas reconnue...
    A noter qu'elle est reconnue en dehors de toutes fonctions. Voir exemple code précédant.


    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
    45
    46
    47
     
    package michelt.fr.prog7;
    import android.graphics.Point;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Display;
     
    public class MainActivity extends AppCompatActivity {
     
     
        public static final float LONGUEUR_LIGNE = 250;
        public int largeurEcran;
        public int hauteurEcran;
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
     
            //   taille de l'ecran
            Display display = getWindowManager().getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            largeurEcran = size.x;
            hauteurEcran = size.y;
     
            Marge marge = new Marge(largeurEcran, hauteurEcran);
        }
           private class Marge {
     
                public float horizontale;
                public float verticale;
     
     
                public Marge(int l, int h) {
     
                    horizontale = (l - LONGUEUR_LIGNE) / 2;
                    verticale = (h - LONGUEUR_LIGNE) / 2;
                    android.util.Log.i("DEBUG", String.valueOf(largeurEcran + "...." + hauteurEcran + "...." + LONGUEUR_LIGNE));
                }
            }
     
            private void test() {
                android.util.Log.i("DEBUG", String.valueOf(marge.horizontale));
            }
        }

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Android
    Inscrit en
    Avril 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Avril 2015
    Messages : 63

  7. #7
    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 : 40
    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
    Ca serait pas mal d'apprendre les bases de la programmation

    Quand tu déclares dans onCreate
    Marge marge = new Marge(largeurEcran, hauteurEcran);
    Ta variable marge est évidemment limité à la fonction oncreate.

    Si tu en as besoin ailleurs il faut alors en faire une variable membre comme tu le fais pour largeurEcran par exemple.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Récupération de la valeur d une variable elle même contenue dans une variable
    Par guiplongeur dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/03/2015, 16h23
  2. Mettre une variable dans l'appel d'une variable de session
    Par PrinceMaster77 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2011, 10h12
  3. Réponses: 9
    Dernier message: 05/11/2008, 09h37
  4. Réponses: 1
    Dernier message: 17/01/2007, 21h52
  5. Réponses: 7
    Dernier message: 13/03/2006, 15h39

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