То, что вы хотите переключить, неверно.OnSharedPreferenceChangeListener будет передавать литерал разрешенного ключа.К сожалению, вы не можете использовать оператор switch () .. case с ключом, который он передает (если вы не используете Java 7 ).Поскольку ваш экран настроек имеет ограниченные параметры, и вы заранее знаете, какие они есть, вы проверяете те клавиши, на которые вы хотите реагировать при изменении:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){
if(key.equals(getString(R.string.somestringresourceyoucareabout)) {
//if you ask the user to enter an int value for this key then you need to cast it explicitly since preferences will store everything as text except for checkboxpreference
int value = Integer.parseInt(prefs.getString(key, defaultValue));
}
else if(key.equals(getString(...)) {
...
}
}
Возможно, вы захотите изучить работу с Java7 с плагином eclipse ADT, если вы действительно хотите использовать switch () .. case. Честно говоря, если вы пишете оператор case для каждой из клавиш, к которой вы хотите обратиться, вы можете использовать nested, если ..иначе, если вместо этого возникнут условия и покончим с этим, вместо того, чтобы тратить время на использование Java 7 с ADT.