web-dev-qa-db-fra.com

Comment recevoir un événement sur Android checkbox check change?

Quelle serait la bonne façon de recevoir et d'envoyer un événement lorsqu'une case à cocher est activée ou désactivée? 

En C #, je pouvais tout simplement double-cliquer et tout le code serait fait pour moi. Mais sous Android, cela semble un peu plus obscur. J'ai pensé utiliser les gestionnaires d'événements tactiles, mais si l'utilisateur dispose d'un clavier, il ne détectera pas le changement, car ce n'est pas tactile. Je suppose que Android devrait avoir un événement natif pour le changement d'état de case à cocher.

48
Annerajb
CheckBox repeatChkBx = ( CheckBox ) findViewById( R.id.repeat_checkbox );
repeatChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
            // perform logic
        }

    }
});
137
Cristian

Etant donné que CheckBox (éventuellement) étend la vue, vous pouvez utiliser un OnClickListener standard pour détecter le moment où l'utilisateur clique sur le CheckBox (par opposition aux mises à jour de ListView):

CheckBox repeatChkBx = ( CheckBox ) findViewById( R.id.repeat_checkbox );
repeatChkBx.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        if ( ((CheckBox)v).isChecked() ) {
            // perform logic
        }
    }
});
5
Phileo99

Essaye ça

CheckBox checkbox=(CheckBox)findViewById(R.id.checkbox);
checkbox.setOnClickListener(new View.OnClickListener()
{
        @Override
        public void onClick(View v)
        {
            if (checkbox.isChecked())
            {
             //Perform action when you touch on checkbox and it change to selected state
            }
            else
            {
   //Perform action when you touch on checkbox and it change to unselected state
            }
        }
    });
0
Sunil