共享首选项不会因活动而改变?
问题描述:
如果我在一个活动中设置了共享首选项,为什么另一个有不同的首选项?上下文变了? (但我本身使用的应用程序上下文!)共享首选项不会因活动而改变?
这里是我的代码
MyApp appState = ((MyApp)this.activity.getApplicationContext());
appState.setDittaSelezionata((int) itemId);
....
MyApp appState = ((MyApp)this.getApplicationContext());
int ditta_id_selezionata = appState.getIdSomething();
而且
public class MyApp extends Application implements Parcelable {
private SharedPreferences getSharedPrefs()
{
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
//SharedPreferences settings = this.getSharedPreferences(MyApp.PREFS_NAME, this.MODE_PRIVATE);
return settings;
}
public int getIdSomething() {
SharedPreferences settings = this.getSharedPrefs();
return settings.getInt("ditta_id_selezionata", 0);
}
public void setDittaSelezionata(final int ditta_selezionata) {
SharedPreferences settings = this.getSharedPrefs();
SharedPreferences.Editor editor = settings.edit();
editor.putInt("ditta_id_selezionata", ditta_selezionata);
// Commit the edits!
editor.commit();
}
...
我怎样才能让全球喜好是sh在所有活动之中android 3.2?有没有android提供的东西,或者我必须编写一个保存到文件/打开文件,并将其添加到每个活动onStop()/ onCreate()?
答
试试这个。
private static final String APP_PREF = "application_preference";
private static final String DITTA = "ditta_id_selezionata";
public class MyApp extends Application implements Parcelable {
private SharedPreferences getSharedPrefs(){
SharedPreferences settings = getApplicationConext().getSharedPreferences(APP_PREF, Context.MODE_PRIVATE);
return settings;
}
public int getIdSomething() {
SharedPreferences settings = this.getSharedPrefs();
return settings.getInt(DITTA, 0);
}
public void setDittaSelezionata(final int ditta_selezionata) {
SharedPreferences settings = this.getSharedPrefs();
SharedPreferences.Editor editor = settings.edit();
editor.putInt(DITTA, ditta_selezionata);
// Commit the edits!
editor.commit();
}
我想你已经做了类似的事情,但评论它。这应该让您的偏好在整个应用中始终保持不变。正如你在这里看到的,你要确保正在读取和写入相同的首选项文件。
+0
奇怪,它工作,即使虽然我确信我之前尝试过...谢谢! – max4ever 2012-03-16 10:33:36
答
共享首选项在活动中保持不变。如果您看到不同的数据,那么我预计这些值不会被保存。我认为问题不在于阅读数据,而在于写作,因此请检查您的偏好编写代码。
如何将'ditta_id_selezionata'添加到sharedPreferences中?首先我可以想到的是,你忘记提交()后,你可以设置值 – SERPRO 2012-03-14 16:23:29
看到一个代码spinet你把东西放在sharedpreference – Blackbelt 2012-03-14 16:23:31
添加代码,我设置sharedpref – max4ever 2012-03-16 08:45:16