我首次嘗試首選項時不知道PreferenceActivity
。所以現在我有一個應用程序,它將所有用戶首選項存儲在特定的首選項文件中PreferenceActivity如何使用自定義首選項文件
我想遷移到使用PreferenceActivity,但我也希望我的用戶保持他們的偏好。
有沒有辦法告訴我的PreferenceActivity使用該特定文件的所有偏好?
我首次嘗試首選項時不知道PreferenceActivity
。所以現在我有一個應用程序,它將所有用戶首選項存儲在特定的首選項文件中PreferenceActivity如何使用自定義首選項文件
我想遷移到使用PreferenceActivity,但我也希望我的用戶保持他們的偏好。
有沒有辦法告訴我的PreferenceActivity使用該特定文件的所有偏好?
你可以在你的應用程序開始時讀取所有的喜好,然後使用
Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
e.putBoolean("yourPreference", true);
e.putString("yourOtherPreference", "This is the Value");
...
e.commit();
我希望幫助
我現在實現了這個變體,儘管我最初更喜歡重新命名Andrew的文件。我從來沒有發現如何做後者,所以我堅持明顯。謝謝! – Yashima 2011-03-03 13:29:36
好,我很高興它幫助! – raukodraug 2011-03-03 14:22:44
Maaalte是正確的將它們存儲在Preferences
,你想要做的是什麼onCreate測試是否存在您的自定義文件,如果存在,請將其重命名爲標準的共享首選項文件名。
另一個選擇是逐個讀取舊的首選項,並在讀取它們時使用共享首選項API添加它們,然後在完成時刪除舊的首選項。
它可能爲時已晚發佈此,但你可以在這裏找到一個很好的解決方案
您設置的默認共享偏好文件的名稱預先這樣的:
public class MyPreferencesActivity extends PreferenceActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager prefMgr = getPreferenceManager();
prefMgr.setSharedPreferencesName("my_preferences");
prefMgr.setSharedPreferencesMode(MODE_WORLD_READABLE);
addPreferencesFromResource(R.xml.preferences);
}
}
我希望這有助於某人。
問候。
很好的答案(儘管不贊成......)因爲鏈接被破壞而被編輯 - 並從鏈接複製代碼。雖然恕我直言,使用'MODE_WORLD_READABLE'是一個錯誤。 – 2013-07-16 18:43:10
你可以編寫一個方法讀取你的舊偏好並將它們保存爲常規偏好 – Maaalte 2011-03-02 15:22:27
我認爲遷移是一種解決方案。但是,我永遠無法擺脫遷移代碼?沒有辦法確保我的應用程序沒有舊版本。 – Yashima 2011-03-02 22:26:52