Я использую общие настройки в своем приложении для Android.
Он отлично работает, но когда я перезапущу приложение, все значения общих настроек исчезли.Общие настройки удалены при перезагрузке приложения
Почему?
Я использую общие настройки в своем приложении для Android.
Он отлично работает, но когда я перезапущу приложение, все значения общих настроек исчезли.Общие настройки удалены при перезагрузке приложения
Почему?
значения Установка в предпочтении:
// MY_PREFS_NAME - a static String variable like:
// public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("name", "Elena");
editor.putInt("idName", 12);
editor.commit();
Получение данных от предпочтений:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
int idName = prefs.getInt("idName", 0); //0 is the default value.
}
Дополнительная информация
http://developer.android.com/guide/topics/data/data-storage.html#pref http://developer.android.com/reference/android/content/SharedPreferences.html
public static void SetStrPref (контекст контекста, строковый ключ, значение строки) { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences (контекст); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString (ключ, значение); editor.commit(); } – user2034953
Это метод, который я использую для сохранения значения общих предпочтений. Я передаю его значение и ключ – user2034953
Используйте getSharedPreferences (MY_PREFS_NAME, MODE_PRIVATE) вместо getDefaultSharedPreferences (контекст); посмотреть http://stackoverflow.com/questions/5946135/difference-between-getdefaultsharedpreferences-and-getsharedpreferences/6310080#6310080 – Assad
Без кода трудно найти решение. В любом случае, я полагаю, вы не переустанавливаете приложение каждый раз перед его запуском. Поэтому, возможно, вы не совершаете изменений в общих предпочтениях. Из Saving Key-Value Sets:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
Проверьте код, чтобы проверить наличие commit()
инструкции.
В первую очередь вы делаете больше вещей в инструкции if? Поскольку вы создаете две переменные, которые ничего не делают и уничтожаются после этого предложения 2nd, вы даже назначаете предпочтение «текст» вообще, когда оно не загружается, потому что вы получаете нулевое значение по умолчанию
Извините, я подумал это был ваш код, но потом он попал в assad
Я думаю, вы не совершаете эти изменения. SharedPreferences.Editor.commit() необходимо применить после помещения значений. Commit гарантирует сохранение значений.
Я использовал метод comit().все отлично, но когда я перезапускаю приложение, тогда все настройки ясны – user2034953
PLEASE SHARE YOU CODE – warlock
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences (контекст); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString (ключ, значение); editor.commit(); – user2034953
Рассмотрим принятый ответ:
Я не знаю, почему, но это работает, просто положив PREFS код внутри асинхронной задачи:
prefss = getSharedPreferences(ACCOUNT_PREFS_NAME, MODE_MULTI_PROCESS);
new AsyncSave(favNamesList).execute();
private static class AsyncSave extends AsyncTask<Void, Void, Boolean> {
String favNamesList;
AsyncSave(String favNamesList) {
this.favNamesList = favNamesList;
}
@Override
protected Boolean doInBackground(Void... params) {
prefss.edit().putString("favNamesList", strings).apply();
return null;
}
}
SharedPreferences являются удаляется только при удалении кэша приложений, или приложение переустанавливается. Не могли бы вы поделиться кодом, в котором вы сохраняете свои предпочтения? – Knossos