java - 使用 GetDefaultSharedPreferences - 在 Activity 之间重置 SharedPref 值

标签 java android sharedpreferences

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

在 StartActivity(启动 Activity )中 - 我从 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 值未设置,因此分配默认值。接下来我转到设置 Activity ,为声音和级别设置新值并保存(从调试器我能够验证是否设置了新值)。

但是,当我回到我的 StartActivity 时,SharedPref 值出于某种原因重置回之前设置的默认值。从 SO 讨论中,我读到使用 getDefaultSharedPreferences 应该保留 Activity 之间的值。

关于问题是什么的任何想法?

最小 SDK 版本:11 目标SDK版本:18

最佳答案

我发现我每次都必须在 onResume 中重新打开 PreferenceManager.getDefaultSharedPreferences(this) 或检查可能的更改。

关于java - 使用 GetDefaultSharedPreferences - 在 Activity 之间重置 SharedPref 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071476/

相关文章:

android - OnRestart 与 OnResume - Android 生命周期问题

android - 如何在 android 中有效且不损失质量的情况下调整位图的大小

java - 保存列表数组

java - SharedPreferences 不能跨 Activity 工作

java - 如何显式调用父类的构造函数

java - 平滑后的GPS数据对比

java - 无法从 STRING 单元格获取 NUMERIC 值

java - 错误 java.lang.RuntimeException : java. lang.RuntimeException : com. android.builder.dexing.DexArchiveMergerException:无法合并 dex

android - 将整个 Bundle 保存到 SharedPreferences

java - Spring JPA 查询 findByNameAndType 返回 null