Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] setChecked toggleButton ne marche pas

Impossible de mettre à jour l'état visuel du bouton

Sujet résolu
    7 juin 2012 à 15:40:35

    Hello world :) , j'aimerais changer l'état d'un toggle button sous android toutes les secondes. Le status(ischecked()) du button
    ets bien mis à jour mais pas l'état visuel. Des idées :)

    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 changed, new state = " + test.isChecked());
        		
        	}else
        	{
        		
        		test.setChecked(true);
        		Log.i("", "state changed, 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();
    		
    	}
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      8 juin 2012 à 0:11:44

      Bonjour,

      J'ai modifié le titre de ton topic afin qu'il soit conforme aux règles du forum "Mobile". Merci de faire attention la prochaine fois.

      Concernant ton problème, je n'ai que très vite parcourus ton code mais est-tu certain que ton boolean se met à true ?
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        8 juin 2012 à 10:58:09

        Je m'en suis sorti finalement, j'avais un message d'erreur dans le logcat parce que j'essayais de faire une modification sur la view depuis un thread et non et UIThread " Only the original thread that created a view hierarchy can touch its views.
        "
        Finalement j'ai fait ça

        Dans le thread:
         
        Message msg = new Message();
                String textTochange = "text"
                msg.obj = textTochange;
                mHandler.sendMessage(msg);
         
        //et dans l'activité 
         
        Handler mHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
        String text = (String)msg.obj;
         
        //setcheck....
        }
        
        • Partager sur Facebook
        • Partager sur Twitter

        [Android] setChecked toggleButton ne marche pas

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown