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.
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
}
});
this.someToggleButton = (ToggleButton)findViewById(R.id.someToggleButton) ;
this.someToggleButton.setOnCheckedChangeListener( new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
doSomethingWith(toggleButton, isChecked) ;
}
}) ;
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
}
});
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 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:
public
void
View
(ce sera la View
sur laquelle on a cliqué)@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();
}
}
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
}
}
});
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.
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) {
//
}
}) ;
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
}
});