因此,我有兩個活動在我的應用程序 - StartActivity和SettingsActivity。使用GetDefaultSharedPreferences - SharedPref值重置活動
在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應該保留活動之間的值。
有什麼問題是什麼想法?
民SDK版本:11 目標-SDK版本:18
打印密鑰。你確定R.string.soundpref等是相同的嗎?你有機會進口R.android嗎? –
是的,我指的是兩個地方的同一把鑰匙。 – Hari
發佈更多的代碼。 API級別?在提交首選項之後並在讀取之前添加調試打印 - 它們的順序是否正確?清理你的項目。 –