programacion - Establecer<String> en las preferencias compartidas de Android no se guarda al forzar el cierre
manual android studio avanzado (2)
Echa un vistazo here .
También por referencia:
EDITAR:
En realidad hay un error con este, ver here . Un extracto de allí:
Este problema todavía está presente en el nivel de 17 API.
Se debe a que el método getStringSet () de la clase SharedPreferences no devuelve una copia del objeto Set: devuelve el objeto completo y, cuando le agrega nuevos elementos, el método commitToMemory de la clase SharedPrefencesImpl.EditorImpl ve eso El valor existente es igual al anterior almacenado.
La forma de solucionar este problema es hacer una copia del conjunto devuelto por SharedPreferences.getStringSet o forzar la escritura en la memoria usando otra preferencia que siempre cambie (por ejemplo, una propiedad que almacena el tamaño del conjunto cada vez)
EDIT2:
Puede haber una solución here , eche un vistazo.
Estoy tratando de usar las preferencias compartidas de androides, he registrado todo y el siguiente código realmente confirma el conjunto de cadenas. El problema es cuando fuerzo a cerrar la aplicación y comenzar de nuevo, la configuración.getStringSet devuelve un conjunto vacío. No hay mensajes de error en cualquier lugar.
He probado PreferenceManager.getDefaultSharedPreferences pero eso tampoco funciona para mí.
Gracias por tu tiempo.
public static final String PREFS_NAME = "MyPrefsFile";
private static final String FOLLOWED_ROUTES = "followedRoutes";
y luego se llama cuando se guarda:
public void onFollowClicked(View view){
SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
Set<String> follows = settings.getStringSet(FOLLOWED_ROUTES, new HashSet<String>());
follows.add(routeId);
editor.putStringSet(FOLLOWED_ROUTES, follows);
editor.commit();
}
También puede solucionar el error mencionado por g00dy de esta manera:
Obtenga el conjunto de sharedPreferences y guárdelo en una variable.
Luego simplemente elimine el conjunto en las preferencias compartidas antes de agregarlo nuevamente al guardar.
SharedPreferences.Editor editor= sharedPref.edit();
editor.remove("mSet");
editor.apply();
editor.putStringSet("mSet", mSet);
editor.apply();
Asegúrate de usar apply () o commit () dos veces.