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 :

SetChecked() ToggleButton android ne marche pas


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 37
    Par défaut SetChecked() ToggleButton android ne marche pas
    Bonjour,

    J'utilise un toggleButton et je veux controler le changement du status du bouton suivant un certain nombre de critères.

    Quand ces critères sont remplis , je fais un setchecked(true) sur le bouton, et je peux afficher dans le log la valeur button.ischecked(), la valeur est bien mis à jour.

    Le problème est que l'état visuel du bouton ne change pas. Je ne sais pas comment faire pour qu'il y ait un rafraîchissement du bouton. Une sorte de repaint(). Des idées?

    Merci

  2. #2
    Membre confirmé Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Par défaut
    Salut,

    Y'a pas de raison, setChecked(true) change l'aspect graphique du ToggleButton.

    Il doit y avoir un problème dans ton code. Tu pourrais nous le montrer ?

  3. #3
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 264
    Par défaut
    Tu dois checked le mauvais button ^^

    T'es sûre de l'id ?

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 37
    Par défaut
    J'ai dans mon layout le code correspondant au bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <ToggleButton
            android:id="@+id/entree5"
            android:layout_width="120dp"
            android:layout_height="30dp"
            android:layout_below="@id/surfaceView"
            android:layout_toRightOf="@id/entree"
            android:layout_marginLeft="50dp"
            />
    Dans mon activité (AffichageActivity.java) je récupère ainsi le toggleButton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    entree5 = (ToggleButton) findViewById(R.id.entree5);
    où entree5 est une propriété de la classe activité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private ToggleButton entree5;
    .
    Dans la méthode onCreate(Bundle savedInstanceState) de AffichageActivity.java, j'éxecute une instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mc.updateLeds(); mc est une autre propriété de AffichageActivity  déclarée ainsi private ModuleCommands mc;
    La méthode de mise à jour du toggle button se trouve dans la classe ModuleCommands.
    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
     
        public void updateLeds() {
     
            Timer tim = new Timer();       
     
     
            tim.schedule(new TimerTask() {
     
                @Override
                public void run() {
                    if (isConnected()) {
                        try {
                           initLeds();
     
                        } catch (Exception e) {
                        }
     
                    }
                }
            }, 0, 1000);// mise à jour du bouton toutes les secondes
     
       }
     
     public  void initLeds() {
     
     
     
     
            if (condition  ) {    
            	/*mise à jour du toggle bouton*/ 
            	affichage.getEntree5().setChecked(true);
                    /*verification de la nouvelle valeur*/
            	Log.i("", "entree 5 activée valeur checked = " + affichage.getEntree5().isChecked() );
     
            } else {
            	/*mise à jour du toggle bouton*/
            	affichage.getEntree5().setChecked(false);
    /*verification de la nouvelle valeur*/
            	Log.i("", "entree 5 desactivée valeur checked = " + affichage.getEntree5().isChecked() );
            }
     
         }
    Je rappelle que lors de la verification de la nouvelle valeur j'ai bien la bonne valeur, donc la mise à jour du status se passe bien mais pas l'affichage.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 37
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Tu dois checked le mauvais button ^^

    T'es sûre de l'id ?
    Oui j'ai bien verifié il s'agit du bon id

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 37
    Par défaut
    Autre chose, lorsque la condition est remplie au démarrage de l'activité, le bouton est bien "highlighted" est sinon il ne l'est pas. Mais pour les mises à jour ultérieures, aucun feedback visuel . Pourtant toutes les secondes , il y a execution de l'instruction setchecked et j'ai l'affichage de la nouvelle valeur ischecked() du bouton sur le logger

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 37
    Par défaut
    thierry et Rappunzell, je vais l'illustrer sur un exemple simple où le but est de changer l'état du toggleButton toutes les secondes, et là non plus ça ne marche pas

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    package com.toggle.test;
     
    import java.util.Timer;
    import java.util.TimerTask;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ToggleButton;
     
    public class TestToggleButtonActivity extends Activity implements OnClickListener {
     
     
    	private ToggleButton test;
    	 private boolean started = false;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            test = (ToggleButton) findViewById(R.id.testButton);
           test.setOnClickListener(this); 
     
        }
    public  void initLeds() {
        	if (test.isChecked())
        	{ 
        		test.setChecked(false);
        		Log.i("", "state chenged, new state = " + test.isChecked());
     
        	}else
        	{
     
        		test.setChecked(true);
        		Log.i("", "state chenged, new state = " + test.isChecked());
     
        	}
     
     
        }
     
        public void updateLeds() {
     
            Timer tim = new Timer();       
     
     
            tim.schedule(new TimerTask() {
     
     
     
    			@Override
                public void run() {
                   if(started)
                        try {
                           initLeds();
     
                        } catch (Exception e) {
                        }
     
     
                }
            }, 0, 1000);
     
     
     
     
        }
    	@Override
    	public void onClick(View v) {
    		started = true;
    		updateLeds();
     
    	}
    }

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

Discussions similaires

  1. Android Delphi XE5 ne marche pas
    Par rdr2510 dans le forum Composants FMX
    Réponses: 26
    Dernier message: 30/04/2014, 09h03
  2. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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