为什么我的SharedPreferences不会保存按钮点击?

Mar*_*nom 1 android sharedpreferences

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

private static final String SHARED_FREFS = "sharedPrefs";
private static final String STATE = "state";
Run Code Online (Sandbox Code Playgroud)

这是按钮点击事件

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!");
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

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

Nil*_*hod 5

为什么我的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!");
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)