Android复选框在更改前侦听单击

时间:2015-10-12 08:40:13

标签: android checkbox

我有一个要求,其中显示特定设置的复选框。当用户点击复选框时,我想显示一个警告对话框。然后,只有当用户点击确认按钮(或类似)时,该复选框才会改变。

我的观点是OnCheckedChanged侦听器仅在复选框已更改状态后触发,而我想在更改状态之前侦听单击。

5 个答案:

答案 0 :(得分:3)

您可以使用onTouchListener和拦截ACTION_DOWN事件来显示提醒。 在用户选择上以编程方式更改已选中状态。

示例:

checkbox.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN){

            //show alert
            return true; //this will prevent checkbox from changing state
        }
        return false;
    }
});

然后在用户选择是或否时调用checkbox.setChecked(true);checkbox.setChecked(false);

答案 1 :(得分:2)

使用此:

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked==true){
                   //Show your alert

                    }
                }else if(isChecked==false){
                    //Show your alert
                }
            }
        });

答案 2 :(得分:1)

如果建议在复选框上使用OnTouchListener。如果满足您的条件,则可以调用checkBox.performClick()。

答案 3 :(得分:1)

你可以尝试一下;

checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
    {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            if ( isChecked )
            {
                // do anything
                // perform logic
            }

        }
    });

答案 4 :(得分:1)

您可以设置onClickListener并相应地设置复选框的checked状态。

    myCheckBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // createYourDialog
            // onPositiveButtonClicked
            myCheckBox.setChecked(true);
            // onNegativeButtonClicked
            myCheckBox.setChecked(false);

            // yourDialog.show();
        }
    });