Почему мои SharedPreferences не сохраняются при нажатии кнопки? - PullRequest
0 голосов
/ 11 февраля 2019

Поэтому я пытаюсь добавить некоторые значения к своему 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!");
                }
            }
        });

Я пытаюсь сохранить текущую минуту там, но она этого не делает.Нужна ли мне папка с данными с XML-файлом sharedPrefs?

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Всегда commit или применяются в редакторе после обновления чего-либо на sharePrefs

mEditor.commit();
0 голосов
/ 11 февраля 2019

Поскольку я вижу ваш код, всегда нужно использовать editor.commit() или editor.apply() после добавления данных в редакторе общих настроек.какой из них следует использовать Пожалуйста, см. ниже:

    apply() vs commit();

    commit(): this method runs synchronously means,
    1.  thread safe.
    2. slow.
    and always gives feed back but 
    apply():  this method runs asynchronously means.
    1. no thread safe.
    2. runs fast.
    and does not give feedback.
Finally sharedPreferences instances are singleton with in a process it's safe to replace any instance of commit() with apply(), if you were already ignoring the return value.

Используйте в соответствии с вашими требованиями.

0 голосов
/ 11 февраля 2019

Почему мои SharedPreferences не сохраняются при нажатии кнопки?

Поскольку вы забыли сохранить обновления в вашем SharedPreferences

Вам необходимо использовать editor.apply(); или editor.commit(); после добавления данных в ваш SharedPreferences

SAMPLE

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!");
                }
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...