我有一個活動爲我的共享首選項實現了一個偵聽器,因此當用戶拉起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