Вы должны всегда возвращать true, если клик был обработан.Из API :
public abstract boolean onPreferenceClick (Preference preference)
Начиная с: Уровень API 1
Вызывается при нажатии на Предпочтение.
Параметры
preference
- предпочтение, по которому щелкнули.
Возвращает
True
- есликлик был обработан.
Таким образом, ваш код должен выглядеть следующим образом:
CheckBoxPreference buyPref = (CheckBoxPreference) findPreference("pref_billing_buy");
buyPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
if (buyPref.isChecked()) {
// checkbox is checked, do something
} else {
// checkbox not checked, do something else
}
return true;
}
Менеджер предпочтений должен обрабатывать, проверяется элемент или нет, но если вы хотите сделать это самостоятельно:
CheckBoxPreference buyPref = (CheckBoxPreference) findPreference("pref_billing_buy");
buyPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
// this will toggle the checkbox
buyPref.setChecked(!buyPref.isChecked());
return true;
}