首页 > 解决方案 > 为什么我的 SharedPreferences 在按钮单击时不保存?

问题描述

所以我试图向我添加一些值,SharedPreferences但每次我点击按钮时,它都会使用默认值,00所以我的 if 语句总是返回 true,即使它不应该。

private static final String SHARED_FREFS = "sharedPrefs";
private static final String STATE = "state";

这是按钮点击事件

public void onClick(View v) {
                SharedPreferences sharedPreferences = getSharedPreferences(SHARED_FREFS, MODE_PRIVATE);
                SharedPreferences.Editor editor =  sharedPreferences.edit();

                int currentTime = Calendar.getInstance().getTime().getMinutes();
                String eh = sharedPreferences.getString(STATE,  "00");

                if(!Integer.toString(currentTime).equalsIgnoreCase(sharedPreferences.getString(STATE,  "00"))){
                    GetData();
                    editor.putString(STATE, Integer.toString(currentTime));
                    Log.e("ATTENTION!:", "METHOD HAS BEEN FIRED!");
                }
            }
        });

我正在尝试将当前分钟存储在那里,但它没有这样做。我是否需要一个名为 data 的文件夹,其中包含一个名为 xml 的文件sharedPrefs

标签: androidsharedpreferences

解决方案


为什么我的 SharedPreferences 在按钮单击时不保存?

因为您忘记将更新保存在您的SharedPreferences

您需要使用editor.apply();editor.commit();添加数据后SharedPreferences

样本

public void onClick(View v) {
                SharedPreferences sharedPreferences = getSharedPreferences(SHARED_FREFS, MODE_PRIVATE);
                SharedPreferences.Editor editor =  sharedPreferences.edit();

                int currentTime = Calendar.getInstance().getTime().getMinutes();
                String eh = sharedPreferences.getString(STATE,  "00");

                if(!Integer.toString(currentTime).equalsIgnoreCase(sharedPreferences.getString(STATE,  "00"))){
                    GetData();
                    editor.putString(STATE, Integer.toString(currentTime));
                    editor.apply();
                    Log.e("ATTENTION!:", "METHOD HAS BEEN FIRED!");
                }
            }
        });

推荐阅读