web-dev-qa-db-fra.com

attachez onClickListener à ToggleButton

J'ai un ToggleButton et je dois configurer des actions de clic simples. Comment implémenter un écouteur de clic simple pour un ToggleButton?

Si vous avez besoin de détails s'il vous plaît demander.

33
nkcmr

ToggleButton étend View, vous pouvez donc simplement utiliser View.setOnClickListener () , comme ceci:

// get your ToggleButton
ToggleButton b = (ToggleButton) findViewById(R.id.myButton);

// attach an OnClickListener
b.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // your click actions go here
    }
});
38
Jacob Ras
    this.someToggleButton = (ToggleButton)findViewById(R.id.someToggleButton) ;
    this.someToggleButton.setOnCheckedChangeListener( new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
            doSomethingWith(toggleButton, isChecked) ;
        }
    }) ;
52

Utilisez View.setOnClickListener() et Check state of button.

    final ToggleButton tB = (ToggleButton) findViewById(R.id.toggleButton1);
    tB.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if(tB.isChecked()){
                //Button is ON
                            // Do Something 
            }
            else
            //Button is OFF
                            // Do Something     
        }
    });
30
salman khalid

Juste pour ajouter un point non souligné dans les autres réponses - lier par programme un gestionnaire de clics est un peu lourd sur le code de bolierplate. Comme mentionné dans la documentation , ce n'est nécessaire que dans certains scénarios, tels que:

  • Si le ToggleButton est instancié à l'exécution
  • Si le comportement du clic est défini dans une sous-classe Fragment

Si le ToggleButton est défini dans la disposition, il est beaucoup plus simple et plus propre de lier une méthode de gestionnaire là-bas

<ToggleButton 
  Android:id="@+id/togglebutton"
  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
  Android:textOn="On"
  Android:textOff="Off"
  Android:onClick="onToggleClicked"/>

Ensuite, seule la méthode du gestionnaire doit être définie dans Activity Java.

public void onToggleClicked(View view) {
    if(((ToggleButton) view).isChecked()) {
        // handle toggle on
    } else {
       // handle toggle off
    }    
}

Notez que la méthode peut avoir n'importe quel nom, mais que la signature doit répondre à ces critères:

  • Doit être une méthode public
  • Doit retourner void
  • Doit prendre un seul argument de type View (ce sera la View sur laquelle on a cliqué)
16
davnicwil
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(isChecked){
        Toast.makeText(getApplicationContext(),"on",Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(getApplicationContext(),"off",Toast.LENGTH_SHORT).show();
    }
}
1
Arbaz Pirwani
mTB = (ToggleButton) findViewById(R.id.toggleButton1);
mTB.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // Is the toggle on?
            boolean on = ((ToggleButton) v).isChecked();

            if (on) {
                // Enable here
            } else {
                // Disable here
            }

        }
    });
1
chinnuabhi

Pour l'ajouter à partir du code, vous pouvez faire quelque chose comme:

yourButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
      finish();
    }
  });

Cependant, vous pouvez également spécifier dans le code XML de votre bouton la méthode à associer à l'action/l'événement onClick.

1
Luis Miguel Serrano

Essayez setOnCheckedChangeListener méthode de votre ToggleButton class

ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
        // 
    }
}) ;
0
Pehlaj

si les codes ci-dessus ne fonctionnent pas, essayez

b.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
       // your click actions go here
    }
});
0
Jayson Tamayo