首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GetDefaultSharedPreferences - SharedPref值在活动之间重置

使用GetDefaultSharedPreferences - SharedPref值在活动之间重置
EN

Stack Overflow用户
提问于 2014-01-12 12:57:36
回答 2查看 429关注 0票数 3

因此,我的应用程序中有两个活动- StartActivity和SettingsActivity。

在StartActivity (启动活动)中,我从SharedPref读取了电平和声音的值。如果未设置,则将其设置为默认值,否则采用找到的值。下面的代码在StartActivity的OnCreate中。

代码语言:javascript
复制
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中,我有一个保存按钮,可以保存新设置的声音和音量值

代码语言:javascript
复制
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值被重置回以前设置的默认值。从这样的讨论中,我了解到使用getDefaultSharedPreferences应该保留活动之间的值。

你知道问题出在哪里吗?

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

EN

回答 2

Stack Overflow用户

发布于 2015-05-14 06:24:00

我发现我每次都要在onResume中重新打开PreferenceManager.getDefaultSharedPreferences(this),或者在可能的更改之后进行检查。

票数 1
EN

Stack Overflow用户

发布于 2014-01-12 13:03:35

我认为您使用两个不同SharedPrefrence,因为您使用的与上下文和上下文相关的方法在2个活动上是不同的,或者您不保存编辑器对象。也许这段代码能帮到你:

代码语言:javascript
复制
    SharedPreferences setting = getSharedPreferences("HomeSetting", 0);
    Editor editor = setting.edit();
    editor.putBoolean(SERVICE_ON_VALUE, false);
    editor.commit();

希望对您有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21071476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档