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 :

Appel de classe


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut Appel de classe
    Bonjour,
    J'ai un programme Cercle héritant de "view" qui crée un nombre. J'ai créé un layout dans "activity_main.xml" avec des "EditText" pour récupérer le nombre de cercles et d'épaisseur que l'utilisateur souhaite afficher.

    Je voudrais savoir comment faire pour envoyer les données du nombre de cercles et de l'épaisseur dans ma classe Cercle.
    Mon layout est en tout en haut et je souhaite afficher les cercles sur la partie restante. Je ne sais pas comment faire cela.

    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
     
     
    public class MainActivity extends ActionBarActivity {  
     
        protected void onCreate(Bundle savedInstanceState) {      
            super.onCreate(savedInstanceState);                   
            setContentView(R.layout.activity_main);               
            //setContentView(new Cercle(this));                   
        }                                                         
     
     
        public void okOnClick(View v)                                               
        {                                                                           
            EditText varNbCercle = (EditText) findViewById(R.id.nbCercle);          
            EditText varEpaisseur = (EditText) findViewById(R.id.epaisseur);        
     
            String StrNbCercle = varNbCercle.getText().toString();                  
            String StrEpaisseur = varEpaisseur.getText().toString();                
     
        }
     
    }

  2. #2
    Membre émérite
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Par défaut
    Salut,
    T'as question est très flou, soit très basique.
    Mais surtout, ne sachant pas a quoi ressemble la classe Cercle, je pars sur des suppositions.

    Tu dois avoir dans cette classe 1 variables pour l'épaisseur (et une position x/y ?), donc il te suffit de setter cette valeur et de redessiner la vue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monCercle.setEpaisseur(nouvelleEpaisseur);
    Pour le nombres de cercles a afficher, tu dois créer autant d'objet Cercle que tu souhaité.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    j'ai mis monCercle.setEpaisseur(nouvelleEpaisseur); j'ai un message d'erreur disant: Non-static method 'setEpaisseur(int) cannot be referenced from a static context

  4. #4
    Membre émérite
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Par défaut
    Met le code de ta classe Cercle, ou les parties importante (déclaration des variable / méthodes); Ce sera plus simple pour t'aider.
    En tout cas, tu ne dois pas avoir de variable et de méthode static dedans, car injustifié dans le cas présent.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Bonjour,
    Dans le code la classe cercle s'appelle MyView, elle génère 20 cercles de position aléatoire au début et l'utilisateur pourra ensuite choisir le nombre et l'épaisseur des cercles qui seront affichés .

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
     
    public class MyView extends View {
     
        public MyView(Context context, AttributeSet attrs)
        {
            super(context, attrs);
        }
        public MyView(Context context, AttributeSet attrs, int defStyle){super(context, attrs,defStyle);}
        public MyView(Context context){super(context);}
     
     
    //      -------------------------- Getter et Setter --------------------------------------
     
    //                     ** nombre de cercle **
        int nbCercle = 21 ;
        public int getNbCercle() { return nbCercle; }
        public void setNbCercle(int nbCercle) { this.nbCercle = nbCercle; }
     
     
    //                     ** épaisseur **
        public int epaisseur = 7;
        public int getEpaisseur() { return epaisseur; }
        public void setEpaisseur(int epaisseur) { this.epaisseur = epaisseur;  }
     
     
    // ==================== Création des cercles ====================
     
        protected void onDraw(Canvas canvas)
        {
            int x = getWidth(); int y = getHeight(); // hauteur et largeur du téléphone.
     
            Paint paint = new Paint();
            //paint.setColor(android.graphics.Color.RED);
            paint.setStrokeWidth(epaisseur);
            paint.setStyle(Paint.Style.STROKE);
     
            Random rand = new Random();
            int n;                                  // taille du cercle
            int pX;                                 // position x
            int pY;                                 // position y
     
            for(int i=0;i<nbCercle;i++)
            {
                n = rand.nextInt(300);
                pX = rand.nextInt(x);
                pY = rand.nextInt(y);
                paint.setARGB(255,rand.nextInt(255),rand.nextInt(255),rand.nextInt(255)); // Affecte une couleur.
                canvas.drawCircle(pX, pY,n, paint);  // Crée un cercle.
            }
     
            //canvas.drawLine(0, 0, x, y, paint);
            super.onDraw(canvas);
        }
     
     
    }

  6. #6
    Membre émérite
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Par défaut
    Ok,
    Je pense que tu appels ta classe de création de manière static, ce qu'il n'aime pas.

    En gros tu devrais avoir dans ton Activity quelques chose s'approchant de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyView view = new MyView(monContext);
    Il faut que tu set la valeur de ton nouvel objet crée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    view.setEpaisseur(nouvelleValeur);
    Ensuite, si nécessaire demander à la vue de se redessiner :
    J'imagine que ca doit regler ton soucis.

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

Discussions similaires

  1. [Package] Appel à une classe
    Par GLDavid dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2006, 12h49
  2. Appeler une classe CSS avec Javascript
    Par p0Kep0K dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/02/2006, 14h50
  3. Appeler 2 classes en même temps?
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/02/2006, 23h38
  4. Réponses: 14
    Dernier message: 15/12/2005, 18h46
  5. [Exception]Connaitre la pile d'appel de classes/méthodes
    Par salome dans le forum Général Java
    Réponses: 2
    Dernier message: 19/03/2005, 20h21

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