- if (key.equals(KEY_DECODE_1D)) {
- mDecodeQR.setEnabled(mDecode1D.isChecked());
- mDecodeQR.setChecked(true);
- } else if (key.equals(KEY_DECODE_QR)) {
- mDecode1D.setEnabled(mDecodeQR.isChecked());
- mDecode1D.setChecked(true);
+ disableLastCheckedPref();
+ }
+
+ private void disableLastCheckedPref() {
+ Collection<CheckBoxPreference> checked = new ArrayList<CheckBoxPreference>(3);
+ if (decode1D.isChecked()) {
+ checked.add(decode1D);
+ }
+ if (decodeQR.isChecked()) {
+ checked.add(decodeQR);
+ }
+ if (decodeDataMatrix.isChecked()) {
+ checked.add(decodeDataMatrix);
+ }
+ boolean disable = checked.size() < 2;
+ for (CheckBoxPreference pref : new CheckBoxPreference[] {decode1D, decodeQR, decodeDataMatrix}) {
+ pref.setEnabled(!(disable && checked.contains(pref)));