SharedPreferences не работает при повторном открытии приложения - PullRequest
0 голосов
/ 04 февраля 2019

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

Вот код

public  static boolean isSeen;

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.b);
        milestoneCheck();
}


public void milestoneCheck(){
    totalKm = (int) Float.parseFloat(TripsInfo.km.get(TripsInfo.userRank - 1));


    Log.d("test", "before" + isSeen);

    if (totalKm == 84 && !isSeen) {
        updateTrue(true);
        Log.d("test", "inside" + isSeen);
        isSeen=readFromSharedPrefs();
    }

    Log.d("test", "after" + isSeen);

}

private void updateTrue(Boolean value) {

    SharedPreferences sp = getSharedPreferences("inactivity", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    editor.putBoolean("inactive", value);
    editor.apply();
}

public boolean readFromSharedPrefs() {
    SharedPreferences sharedPreferencesIn = getSharedPreferences("inactivity", Context.MODE_PRIVATE);

    return sharedPreferencesIn.getBoolean("inactive", false);
}

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

1 Ответ

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

isSeen всегда ложно, потому что вы забыли назначить последнее значение из предпочтения.

, и когда вы переходите от другого действия к этому, оно все равно истинно, потому что вы объявили его как статическое, это означает, что значениеостаются до тех пор, пока приложение живет.

Решение:

добавить isSeen=readFromSharedPrefs(); до того, как будет указано

public void milestoneCheck(){
totalKm = (int) Float.parseFloat(TripsInfo.km.get(TripsInfo.userRank - 1));

  isSeen=readFromSharedPrefs();
  Log.d("test", "before" + isSeen);

 if (totalKm == 84 && !isSeen) {
    updateTrue(true);
    Log.d("test", "inside" + isSeen);
    isSeen=readFromSharedPrefs();
}

Log.d("test", "after" + isSeen);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...