我有一个要求,其中显示特定设置的复选框。当用户点击复选框时,我想显示一个警告对话框。然后,只有当用户点击确认按钮(或类似)时,该复选框才会改变。
我的观点是OnCheckedChanged
侦听器仅在复选框已更改状态后触发,而我想在更改状态之前侦听单击。
答案 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();
}
});