我的代码中有一个CheckBox,如果选中它,用户就不能取消选中它。这就是我决定在Checkbox上实现onCheckedChangeListener的原因。
如果已选中并单击,则会询问确认,否则不会询问确认。 当询问确认(通过对话框)并且用户取消时,复选框必须保持(或再次设置)检查。所以我在点击取消按钮时实现了“CheckBox.setChecked(true)”,现在我的确认被问了两次。我不知道怎么摆脱这个。
以下是相关代码:
mEventAttendingCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
//do nothing
} else {
Context mContext = EventSingleViewActivity.this;
final Dialog dialog = new Dialog(mContext);
dialog.setCancelable(true);
Button confirmButton = (Button) dialog.findViewById(R.id.confirmButton);
confirmButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
//do something
}
});
Button cancelButton = (Button) dialog.findViewById(R.id.cancelButton);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
mEventAttendingCheckBox.setChecked(true);
}
});
dialog.show();
}
}
});
答案 0 :(得分:7)
在CLickListener instead of onCheckChanged
上实施..因为只有在用户点击它时才调用CLick,但是即使你在代码中说setChecked()
,OnCheckChanged也会被调用...
答案 1 :(得分:0)
使用与boolean flag= false
在你的其他条件检查中,
if(flag == false)
// open dialog
else
// just uncheck button
首先在onClick of confirm按钮中设置flag = true
,然后取消选中该复选框。
首先在点击取消按钮中设置flag = false
,然后选中复选框。