簡體   English   中英

使用GetDefaultSharedPreferences - 在活動之間重置SharedPref值

[英]Using GetDefaultSharedPreferences - SharedPref values reset between Activities

所以,我的應用程序中有兩個活動 - StartActivity和SettingsActivity。

在StartActivity(啟動活動)中 - 我從SharedPref讀取級別和聲音值。 如果它們未設置,我將它們設置為默認值,否則我將獲取找到的值。 以下代碼位於StartActivity的OnCreate中。

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);

String levelValue = sharedPref.getString(getString(R.string.levelpref), null);
String soundValue = sharedPref.getString(getString(R.string.soundpref), null);

if(levelValue == null)
{
    String levelDefaultValue = (getResources().getStringArray(R.array.level))[0];
    String soundDefaultValue = (getResources().getStringArray(R.array.sound))[0];

    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString(getString(R.string.levelpref), levelDefaultValue);
    editor.putString(getString(R.string.soundpref), soundDefaultValue);
    editor.apply();
}

在SettingsActivity中,我有一個保存按鈕,可以為聲音和級別保存新設置的值

public void saveSettings(View v)
{
        SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString(getString(R.string.levelpref), level);
        editor.putString(getString(R.string.soundpref), sound);
        editor.apply();
}

現在,當我啟動我的應用程序 - StartActivity啟動時 - 看到聲音和級別的SharedPref值未設置,因此分配默認值。 接下來,我轉到設置活動,為聲音和級別設置新值並保存(從調試器我能夠驗證是否設置了新值)。

但是,當我回到StartActivity時,SharedPref值由於某種原因重置回之前設置的默認值。 從SO討論中,我讀到使用getDefaultSharedPreferences應保留活動之間的值。

關於問題是什么的任何想法?

Min-sdk版本:11 Target-sdk版本:18

我發現每次在onResume上都要重新打開PreferenceManager.getDefaultSharedPreferences(this),或者在可能的變化后檢查。

我認為您使用兩個不同的SharedPrefrence ,因為您使用的與上下文和上下文相關的方法在2個活動上是不同的,或者您不保存編輯器對象。 也許這段代碼可以幫助你:

    SharedPreferences setting = getSharedPreferences("HomeSetting", 0);
    Editor editor = setting.edit();
    editor.putBoolean(SERVICE_ON_VALUE, false);
    editor.commit();

希望有用:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM