我有一个 Activity 为我的 Shared Preferences 实现了一个监听器,所以当用户拉起 FragmentPrefs 并更改 onSharedPreferenceChanged(SharedPreferences prefs, String key) 的值时,很好。
SharedPreferences prefs;
OnSharedPreferenceChangeListener listener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
registerPreferenceListener();
}
private void registerPreferenceListener()
{
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
Debug.out("LISTENING! - Pref changed for: " + key + " pref: " +
prefs.getString(key, null) );
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
}
问题是我试图找到一种方法来优雅地处理更改偏好的事件,而不会在代码中产生难闻的气味。
我有很多需要管理的首选项,因此嵌套的 IF ELSE 语句会变得冗长乏味。我考虑过实现多态性,这会很好,但我仍然需要一个 if/else 来决定调用哪个类的实现。
开关可能会更好,因为我可以引用 R.string.pref_name,尽管 changedPref 方法使用字符串作为键标识符。
我是不是把事情复杂化了,还是我错过了一些微不足道的事情?
谢谢。