Android - getString SharedPreferences печатает значение по умолчанию - PullRequest
0 голосов
/ 23 марта 2020

Я попытался сохранить строку TRUE и сразу вызвать ее, чтобы проверить, успешно ли она сохранена, но результат постоянно выплевывает 0, что является значением по умолчанию. Что не так с моим кодом?

SharedPreferences settings = getSharedPreferences("PREFS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("doublePoint", "TRUE");
String doublePoint = settings.getString("doublePoint", "0");
Toast.makeText(getApplicationContext(), doublePoint,Toast.LENGTH_LONG).show();

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Вы должны добавить editor.commit(), чтобы сохранить его:

SharedPreferences settings = getSharedPreferences("PREFS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("doublePoint", "TRUE");
editor.commit(); // This command saves the data

String doublePoint = settings.getString("doublePoint", "0");
Toast.makeText(getApplicationContext(), doublePoint, Toast.LENGTH_LONG).show();

РЕДАКТИРОВАТЬ: Как указано в комментарии Tyler V, у вас есть два решения:

  • commit(): это сохраняет значение и возвращает true, если новые значения были успешно записаны. Действие выполняется на Main Thread, и вы можете столкнуться с зависанием, если операция займет слишком много времени.

  • apply(): это немедленно сохранит изменения в памяти SharedPreferences но запускает асинхронную фиксацию на диск, и вы не будете уведомлены о каких-либо сбоях.

PS: безопасно заменить любой экземпляр commit() на apply(), если вы уже игнорировали возвращаемое значение.

Источник: https://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply ()

0 голосов
/ 23 марта 2020

Вам нужно добавить commit(), как только вы добавите значение в SharedPreferences. Просто добавьте это следующим образом:

SharedPreferences settings = getSharedPreferences("PREFS", 0); 
SharedPreferences.Editor editor = settings.edit().commit();
editor.putString("doublePoint", "TRUE"); 
String doublePoint = settings.getString("doublePoint", "0"); 
Toast.makeText(getApplicationContext(), doublePoint, Toast.LENGTH_LONG).show();

Для получения дополнительной информации, посмотрите этот пример .

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