Как перезаписать целое число в общих настройках из другого действия - PullRequest
0 голосов
/ 10 апреля 2019

Я хочу создать пошаговый счетчик, в котором вы можете вручную изменить количество шагов в другом действии.Как изменить целые числа, хранящиеся в общих настройках, из другого действия?Исходные значения помещаются в sharedpreferences в main_activity, а я хочу использовать edit_activity для ручного ввода значений, которые перезаписывают значения в sharedpreferences.

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

SharedPreferences.Editor editor = getSharedPreferences("sharedpreft", Context.MODE_PRIVATE).edit();
        int newyesterday = Integer.parseInt(yesterdayinput.getText().toString());
        editor.putInt("stepsyesterday", newyesterday);
        int newdaybeforeyesterday = Integer.parseInt(daybeforeyesterdayinput.getText().toString());
        editor.putInt("stepsdaybeforeyesterday", newdaybeforeyesterday);
        editor.apply();

Этот код не приводит к ошибкам, но приложение вылетает при попытке перезаписать значения.

Я также нашел другой вопрос, похожий на тот, что здесь не использовался редактор, а были только .edit и .apply.Однако, похоже, что это не работает с целыми числами.

SharedPreferences sharedprefs = getSharedPreferences("sharedprefs", Activity.MODE_PRIVATE);
        int newtoday = Integer.parseInt(todayinput.getText().toString());
        sharedprefs.edit("stepstoday", newtoday).apply();

Этот код приводит к ошибке, говорящей, что edit () не может быть применен к (java.lang.String, Int).

1 Ответ

0 голосов
/ 10 апреля 2019

Точнее сказать, что "IDE задерживается", что не может быть применено ...

SharedPreferences sharedprefs = getSharedPreferences("sharedprefs", Context.MODE_PRIVATE);
int newtoday = Integer.parseInt(todayinput.getText().toString());
SharedPreferences.Editor prefEditor = sharedprefs.edit();
prefEditor.putInt("stepstoday", newtoday).apply();

Проблема в том, что нет никакого метода .edit(String, int).Для доступа к редактору вы должны сделать это, как в примере выше.Получите экземпляр редактора общих настроек, а затем используйте методы модификации.

...