我有一个活动为我的共享首选项实现了一个侦听器,因此当用户拉起FragmentPrefs并更改onSharedPreferenceChanged(SharedPreferences首选项,字符串键)的值时, 。如何在没有嵌套IF ELSE语句的情况下处理Android onSharedPreferenceChanged
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方法使用String作为密钥标识符。
我是否在复杂的事情,还是我错过这么琐碎?
谢谢。
谢谢,内存管理也很好。 – tutts 2012-07-06 10:56:07
更多的信息在这里:http://developer.android.com/guide/practices/performance.html#object_creation – Ran 2012-07-06 11:05:00