【问题标题】:Button doesn't update data get from SharedPreference按钮不更新从 SharedPreference 获取的数据
【发布时间】:2017-07-21 04:52:37
【问题描述】:

我在Activity的onActivityResult方法中使用了一些代码来更新数据:

                //save state
                editorUserInfoSharedPreferences.putString("userType", productId);
                editorUserInfoSharedPreferences.putInt("paymentStatus", 1);
                editorUserInfoSharedPreferences.commit();
                editorUserInfoSharedPreferences.apply();

                int paymentStatus = userInfoSharedPreferences.getInt("paymentStatus", 0);
                String userType = userInfoSharedPreferences.getString("userType", "");
                Log.e(TAG, "paymentStatus 1700: "+ paymentStatus);
                Log.e(TAG, "userType 1700: "+ userType);

日志中的数据是正确的。但在那之后,我点击了一个按钮并从 sharePreference 获取数据:

    int paymentStatus = userInfoSharedPreferences.getInt("paymentStatus", 0);
                String userType = 
 userInfoSharedPreferences.getString("userType", "");
                Log.e(TAG, "paymentStatus 1532: "+ paymentStatus);
                Log.e(TAG, "userType 1530: "+ userType);

日志中的数据是旧数据。 这是我的日志:

E/MAINACTIVITY: paymentStatus 1700: 1
E/MAINACTIVITY: userType 1700: monthly_0
....
E/MAINACTIVITY: paymentStatus 1532: 0
E/MAINACTIVITY: userType 1530: 0

我该如何解决这个问题?提前谢谢你!

【问题讨论】:

  • 你应该使用 commit 或 apply
  • 两个都用会有问题吗?
  • 是的,其中一个是同步的,另一个是异步的。如果您正在处理多个线程,并且如果您正在处理 main.thread,那么 android 建议使用 apply()(同步),您可以使用 commit。

标签: android button sharedpreferences android-sharedpreferences


【解决方案1】:

您能否将您的代码粘贴到 init:editorUserInfoSharedPreferences 和 userInfoSharedPreferences。一件事我猜你正在使用 2 个不同的 sharepreference 对象。

【讨论】:

  • userInfoSharedPreferences = getSharedPreferences(CURRENT_USER_INFO_FILE, MODE_PRIVATE); editorUserInfoSharedPreferences = userInfoSharedPreferences.edit();
【解决方案2】:

在对 editorUserInfoSharedPreferences 执行提交后,在 onActivityResult 中初始化您的 userInfoSharedPreferences。

您正在获取旧值,因为您使用的是共享首选项的旧对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多