2012-03-14 30 views
0

如果我在一个活动中设置了共享首选项,为什么另一个有不同的首选项?上下文变了? (但我本身使用的应用程序上下文!)共享首选项不会因活动而改变?

这里是我的代码

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()?

+0

如何将'ditta_id_selezionata'添加到sharedPreferences中?首先我可以想到的是,你忘记提交()后,你可以设置值 – SERPRO 2012-03-14 16:23:29

+0

看到一个代码spinet你把东西放在sharedpreference – Blackbelt 2012-03-14 16:23:31

+0

添加代码,我设置sharedpref – max4ever 2012-03-16 08:45:16

回答

0

试试这个。

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

0

共享首选项在活动中保持不变。如果您看到不同的数据,那么我预计这些值不会被保存。我认为问题不在于阅读数据,而在于写作,因此请检查您的偏好编写代码。