java - SharedPreferences 无法正常工作

标签 java android sharedpreferences

请看下面的代码

@Override
protected void onStop() {
    super.onStop();
    SharedPreferences prefs = getSharedPreferences("screenPref", Context.MODE_PRIVATE);
    SharedPreferences.Editor edit = prefs.edit();
    edit.putString("active_screen", activeScreenText);

    if(edit.commit()){

        Log.i("APP", "SAVED!!"); // LOGCAT Always execute this piece of code

    }
}


// onCreate
SharedPreferences pref = getSharedPreferences("screenPref", Context.MODE_PRIVATE);
    activeScreen.setSummary(pref.getString("active_screen", "Never"));

当用户从 ListPreference 中选择一个选项时,该选项将保存在“activeScreenText”变量中。如果我重新启动应用程序(主页按钮,然后导航回它),它就可以正常工作。加载字符串并设置此首选项的摘要。但是,如果 android 终止了我的应用程序(或者如果我强制关闭它),那么此更改将不会持续存在。每次我的应用程序内存不足时,我都会得到“从不”,但相应的列表首选项保持相同的值。

(我在 listpreference 中有几个选项,我想设置摘要,哪个值是当前选择的。)

例如:

列表首选项: -绝不 -Choice1 -Choice2 -选择3

假设我选择 Choice3。 当我选择值时,摘要设置正确。如果我退出应用程序并再次重新启动它,它会加载完美。如果我的应用程序被 android 强制关闭或终止,则 Choice3 仍处于选中状态,但我的摘要值为默认值(从不)。

我做错了什么?

最佳答案

编辑后立即将您的值保存到 sharedpreferences,而不是在 onStop() 方法中

关于java - SharedPreferences 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317959/

相关文章:

Android - 使用 Singleton 访问保留应用程序设置和 Context

java - 短信到我的网站!

android - ndk-build 不断重建所有源

java - SharedPreferences getInt() 始终返回 0

Android TextToSpeech,设置性别?

java - 不能将字符串转换为日期

Android Jetpack 数据存储 "limit"

java - 根据 JSON 对象中的子值提取父名称。

java - Scheduler.triggerJob 不触发作业

java - 使用 Java 检查是否存在多个 XML 标记