Общие настройки не сохранят данные - PullRequest
1 голос
/ 12 марта 2019

Я новичок в Android и немного в Java (не спрашивайте)

Я хочу использовать общие настройки, и до сего дня все работало нормально, но в моем новом проекте общие настройки не сохранят данные.

В моем методе onCreate у меня есть следующий код:

    preferences = this.getSharedPreferences(KEY, MODE_PRIVATE);
    editor = preferences.edit();
    preferences.getFloat(TESTEPFLOAT, 0);
    preferences.getFloat(TESTCURRENTEPFLOAT, 0);
    preferences.getInt(TESTLEVEL, 1);

в моем методе onDestroy:

@Override
public void onDestroy(){
    super.onDestroy();
    editor.putInt(TESTLEVEL, level);
    editor.putFloat(TESTEPFLOAT, ep);
    editor.putFloat(TESTCURRENTEPFLOAT, currentEP);
    editor.apply();
}

Я не знаю, в чем проблема, и я надеюсь, что кто-то может мне помочь

Ответы [ 3 ]

4 голосов
/ 12 марта 2019

Не используйте onDestroy ().Там нет никакой гарантии, что он будет вызван.Если вы поставите точку останова в этом методе, я думаю, что он не вызывается, когда вы думаете, что это так.

1 голос
/ 12 марта 2019

измените на это:

preferences = this.getSharedPreferences(KEY, MODE_PRIVATE);
preferences.getFloat(TESTEPFLOAT, 0);
preferences.getFloat(TESTCURRENTEPFLOAT, 0);
preferences.getInt(TESTLEVEL, 1);

для сохранения ваших данных:

@Override
    protected void onPause() {
        super.onPause();
    preferences = this.getSharedPreferences(KEY, MODE_PRIVATE);
        editor = preferences.edit();
        editor.putInt(TESTLEVEL, level);
        editor.putFloat(TESTEPFLOAT, ep);
        editor.putFloat(TESTCURRENTEPFLOAT, currentEP);
        editor.apply();
}

или используйте editor.commit(); для немедленного сохранения данных

0 голосов
/ 12 марта 2019

Как сказал @ Гэвин Райт, onDestroy звонят не каждый раз.Переместите код на onPause().onPause() гарантированно будет вызываться каждый раз, когда вы уходите от своей деятельности.

@Override
public void onPause(){
    super.onPause();
    editor.putInt(TESTLEVEL, level);
    editor.putFloat(TESTEPFLOAT, ep);
    editor.putFloat(TESTCURRENTEPFLOAT, currentEP);
    editor.apply();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...