web-dev-qa-db-ja.com

Androidチェックボックスチェックの変更でイベントを受信する方法?

チェックボックスが有効または無効になったときにイベントを送受信する正しい方法は何ですか?

C#では、簡単にダブルクリックするだけで、すべてのコードが自動的に実行されます。しかし、Androidはもう少し不明瞭に見えます。タッチイベントハンドラを使用することを考えましたが、ユーザーがキーボードを持っている場合、タッチではないため変更を検出しません。 figure Androidには、チェックボックスの状態を変更するためのネイティブイベントが必要です。

50
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
        }

    }
});
145
Cristian

CheckBoxは(最終的に)Viewを拡張するため、標準のOnClickListenerを使用して、(ListViewの更新とは対照的に)ユーザーがCheckBoxを実際にタップしたタイミングを検出できます。

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
        }
    }
});
6
Phileo99

これを試して

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