我是Android開發新手。 在我的應用程序中,當用戶更改首選項時,應該調用一個函數來更新某些變量。如何在* onPreferenceChange之後調用函數*
這是我當前的代碼:
mypref.setOnPreferenceChangeListener(
new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference arg0, Object arg1) {
if(arg1.toString().matches("...") == false) {
...
return false;
}
...
updateVariables();
return true;
}
});
的問題是,當updateVariables()
被調用時,優先值尚未更新,功能看到舊值。
private void updateVariables()
{
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
Map<String, ?> savedKeys = sharedPref.getAll();
for (Map.Entry<String, ?> entry : savedKeys.entrySet()) {
// for each preference...
}
}
什麼是最不具侵略性的解決方案?謝謝!
感謝。但是如果在'updateVariables()'我必須迭代許多其他首選項呢?我需要很多不同的論點。 – danieleds
這裏只是給你一個改變了的偏好值。所有其他人都是一樣的,直到回調回來。所以你只需要轉發一個,所有其他的可以通過創建一個普通的'SharedPreferences'對象來讀取。 *(除此之外,如果您提供了很多參數,仍然可以使用'List'作爲參數)* – 2011-10-08 09:13:27
嗯......也許我做錯了,但我添加了一個'updateVariables ()'。 如何使用更新後的值添加額外參數,如何進行循環?我如何避免處理相同的首選項2次(一次使用來自SharedPreferences的舊值,一次使用來自參數的新值)? 我只能想到骯髒的解決方案:S – danieleds