コードにチェックボックスがあり、チェックされている場合、ユーザーはチェックボックスをオフにすることはできません。これが、チェックボックスにonCheckedChangeListenerを実装することにした理由です。
チェックしてクリックすると確認が求められ、そうでない場合は確認が求められません。(ダイアログを介して)確認を求められ、ユーザーがキャンセルした場合、チェックボックスはオンのままにする(または再度設定する)必要があります。そこで、キャンセルボタンをクリックして「CheckBox.setChecked(true)」を実装すると、確認が2回求められます。これを取り除く方法がわかりません。
関連するコードは次のとおりです。
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();
}
}
});