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 de variable à passer à un listener


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Problème de variable à passer à un listener
    Bonjour à tous,

    Je débute en Java et j'ai un peu de mal avec l'utilisation des variables.
    A partir d'un layout XML où j'ai défini mes boutons (plusieurs dizaines !), j'essaie de constituer dans une boucle for la variable qui va bien pour la passer au listener et ainsi instancier mes boutons.
    Et c'est là que je galère.
    Mon bouton "squelette" de départ est "jeton" et je veux incrémenter "jeton" en "jeton1", "jeton2"...etc pour être en phase avec les IDs bouton créés dans le XML.
    Ca doit être tout bête mais je sèche...
    J'ai essayé en passant par une Array mais le code plantait à l'exécution...

    Voila l'idée, ce code est conçu pour un seul bouton et ne fonctionne pas :
    Mon XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <Button
                android:id="@+id/jeton1"
                android:layout_column="0"
                android:layout_row="0"
                android:text="@string/boutona"
                android:layout_height="88dp"
                android:layout_width="88dp"
                android:textSize="40sp"
                android:backgroundTint="#eeceac"
                android:textStyle="bold" />
    La Main Class Java :

    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
     
    public class MainActivity extends AppCompatActivity {
     
        int i;
        String jeton = "jeton";
     
            // private Button[i] jeton = new Button[R.id.jeton[i]];
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            // Step 3 Assignation des objets du tableau Array aux boutons
            for(int i=1; i<2; i++) {
                jeton = jeton + i; // Variable sous la forme "jeton1"
     
                public void addListenerOnButton(jeton); { // Erreur
     
                jeton = (Button) findViewById(R.id.jeton); // Ne marche pas, ne trouve pas jeton1
     
                jeton.setOnClickListener(new OnClickListener() { // Erreur
     
                    @Override
                    public void onClick(View arg0) {
                        /* Les 2 actions effacent le texte et affectent la couleur du background au btn */
                        jeton.getBackground().setAlpha(0); // Erreur
                        jeton.setTextColor(Color.parseColor("#2aa17b")); // Erreur
     
                    }
                });
     
            }
    Merci pour votre aide parce que là je suis coincé

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Visiblement je ne suis pas le seul à être dérouté par la manipulation des variables au vu des réponses

    Je progresse, dans une nouvelle release de mon code j'ai moins d'erreurs mais hélas ça ne fonctionne toujours pas

    Mon code :

    Layout XML

    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
     
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:rowCount="20"
            android:columnCount="9">
     
            <Button
                android:id="@+id/jeton1"
                android:layout_column="0"
                android:layout_row="0"
                android:text="@string/boutona"
                android:layout_height="88dp"
                android:layout_width="88dp"
                android:textSize="40sp"
                android:backgroundTint="#eeceac"
                android:textStyle="bold" />
    Main Java :

    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
     
    public class MainActivity extends AppCompatActivity {
     
        int i;
        String jeton = "";
     
     
        @SuppressLint("ClickableViewAccessibility")
        @Override
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            // Boucle principale
     
            for (i = 1; i < 2; i++) {
     
                jeton = "jeton" + i; // Variable sous la forme "jeton1", "jeton2"...etc
                final Button jetonnew;
                jetonnew = (Button) findViewById(R.id.jeton); // Erreur 'cannot resolve symbol
     
                // Step 4 Action listener
     
                jetonnew.setOnTouchListener(
                        new View.OnTouchListener() {
     
                            @Override
                            public boolean onTouch(View view, MotionEvent event) {
     
                                switch (event.getAction()) {
     
                                    case MotionEvent.ACTION_UP:
                                        jetonnew.getBackground().setAlpha(0); // Crash app à cette instruction
                                        jetonnew.setTextColor(Color.parseColor("#2aa17b"));
                                        break;
                                }
                                return true;
                            }
     
                        });
            }
        }
    }
    Merci pour vos suggestions ou pistes.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Si le but c'est d'accéder à un id de manière dynamique ce que tu fait ne peux pas fonctionner
    Quand tu fais R.id.jeton tu cherche une propriété d'objet. Tu ne peux pas concaténer comme ça une chaine de caractère

    Une solution peut être celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int ressourceId = getResources().getIdentifier("jeton"+i, "id", getPackageName());
    jetonnew = (Button) findViewById(ressourceId);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci Grunk, ta solution marche divinement bien. Il y avait comme qui dirait mélange des genres.
    Mais je ne savais pas la manière de convertir et d'instancier ma variable.
    Je vais continuer de suivre les tutos du site
    Encore merci.

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

Discussions similaires

  1. [Perl/Tk] problème pour faire passer des variables vers une fonction
    Par seben dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 09/03/2009, 15h17
  2. Problème de variable
    Par vp dans le forum Windows
    Réponses: 2
    Dernier message: 14/05/2004, 16h27
  3. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 17h41
  4. [servlet]problème de variable jamais nulle
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2004, 09h31

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