我有一个 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 方法使用字符串作为键标识符。
我是不是把事情复杂化了,还是我错过了一些微不足道的事情?
谢谢。