Вы можете поместить логику максимум двух параметров в OnSharedPreferenceChangeListener
.
Таким образом, вы просто слушаете все настройки по мере их изменения и обновляете их, если выбрана неверная комбинация.
Итак, ваш код будет выглядеть примерно так:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {
//Code to calcuate how many are selected
int code = numberSelected();
if (count > 2) {
sharedPreferences.edit().putBoolean(key,false).commit();
Toast.makeText(this,"Can't select more than two!",Toast.LENGTH_LONG).show();
}
}
Если вы создаете свой собственный PreferenceActivity
, который реализует OnSharedPreferenceChangeListener
, вы можете разрешить слушателю слушать только тогда, когда требуется выполнить что-то вроде этого:
@Override
protected void onResume() {
super.onResume();
//Register the listener
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// Unregister the listener
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}