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 :

Faut-il creer un nouvel objet button pour mettre un listener ?


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chercheur d'Emploi
    Inscrit en
    Février 2017
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'Emploi

    Informations forums :
    Inscription : Février 2017
    Messages : 86
    Par défaut Faut-il creer un nouvel objet button pour mettre un listener ?
    Salut, je vous joint un code de test qui marche parfaitement mais quelque chose m'echappe. J'ai mis les questions directement en commentaire dans le code pour que ça soit plus explicite.

    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
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.Button;
     
    public class PremiereActivite extends AppCompatActivity implements View.OnTouchListener, View.OnClickListener {
        private Button b;         // sur cette ligne on crée un objet Button qui s'appelle "b" on est d'accord ?
        boolean buttonOnOff = false;
     
        @Override
        public void onClick(View v) {
            if (v == b) {
                if (buttonOnOff) {
                    b.setTextSize(100);
                    buttonOnOff = false;
                } else {
                    b.setTextSize(10);
                    buttonOnOff = true;
                }
            }
     
     
        }
     
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_premiere_activite);
     
     
            b = (Button) findViewById(R.id.calculer);              // sur cette ligne là on donne a notre Button "b" les attributs d'un autre objet Button qu'on a crée en XML dans le layout associé a l'activité c'est bien ça ? Si oui comment ça se fait qu'une fois l'appli lancée l'autre Button en question (R.id.calculer) se retrouve avec les listeners qu'on met sur le Button "b" ? (c'est le but recherché mais je ne comprend pas comment ça se fait que ça marche comme ça. en lisant ce code j'aurais tendance a penser qu'on ne fait que crer un nouveau boutton qui prend les attributs du boutton sur notre interface et qu'on lui met des listeners dessus qui ne s'appliqueront jamais puisque d'apres ma logique ce boutton crée ici en Java n'est pas supposé être visible sur l'activité.)
     
            b.setOnClickListener(this);
     
        }
    }
    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de BeeApps
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2017
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 86
    Par défaut
    Salut,

    Tu aurais dû mettre ta question dans le topic car elle est difficile à lire dans ton code.

    Si j'ai bien compris tu penses que cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b = (Button) findViewById(R.id.calculer);
    créée un bouton ?

    En réalité, tu ne fais que récupérer le bouton créé dans le XML. Cette ligne ne créée aucun bouton. Pourquoi voudrais-tu qu'on créé un nouveau bouton sachant qu'on utilise la methode findViewById ?

  3. #3
    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 : 41
    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
    private Button b; // sur cette ligne on crée un objet Button qui s'appelle "b" on est d'accord ?
    Non , tu déclares une variable de type Button , nuance; L'objet n'est en rien créer et la variable vaut donc null.

    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b = (Button) findViewById(R.id.calculer);
    Tu attributs simplement à ta variable b une référence (les puristes dironts que c'est pas vraiment une référence mais il me pardonnerons le raccourcis) vers l'objet button calculer qui lui est crée par le SDK android lorsqu'il parse ton template.
    Donc findViewById(R.id.calculer).setOnClickListener(this) ou b.setOnClickListener(this) agissent tous les deux sur le même objet.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/05/2012, 12h01
  2. Savoir quel objet utiliser pour mettre à jour
    Par bellemeche dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/09/2011, 13h59
  3. Réponses: 2
    Dernier message: 12/08/2011, 14h13
  4. problème pour creer un nouvel utilisateur
    Par julien.63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 26/03/2007, 15h35
  5. Creer une nouvelle référence pour le driver ODBC
    Par tripper.dim dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 04/01/2005, 22h57

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