studio getall data android sharedpreferences

android - getall - SharedPreferences no compartirá entre actividades



sharedpreferences edit (5)

Estoy tratando de usar SharedPreferences para guardar configuraciones. Pero parece que no consigo que los datos se compartan entre mis actividades. El código que estoy usando se las arregla para guardar las configuraciones, pero cada actividad parece tener su propia versión de cada variable.

Así por ejemplo. Tengo una actividad de configuración de audio en la que el usuario puede asignar un valor a una variable "musicVolume" que se guarda. Si cierro el juego y lo recargo, entonces la actividad de configuración de audio "recuerda" el valor. Pero si trato de cargar el valor en cualquier otra actividad, no funciona. Pero, todos pueden cargar y guardar sus propias variables del mismo nombre.

Estos son los métodos que estoy usando para guardar las variables. Hay una copia de cada uno de estos métodos en cada actividad. **

Como digo, funcionan, pero parece que solo pueden leer y escribir datos para la actividad individual en la que se encuentran.

public void SavePreferences(String key, float value) { SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putFloat(key, value); editor.commit(); } public void LoadPreferences() { SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); musicVolume = sharedPreferences.getFloat("musicVolume", (float)0.123); soundEffectsVolume = sharedPreferences .getFloat("soundEffectsVolume", (float)0.123); } public void ClearPreferences() { SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear(); editor.commit(); }

** Sé que hay una mejor manera de hacer esto pero soy un programador muy novato oo. Intenté seguir el consejo de otro hilo.

Preferencias compartidas de Android

pero donde quiera que intente poner las líneas

protected AppPreferences appPrefs; appPrefs = new AppPreferences(getApplicationContext());

Me sale un error de un tipo u otro. Pero lo más importante, al leer los otros comentarios en el hilo, la gente está diciendo que las SharedPreferences se comparten automáticamente entre las actividades dentro del mismo paquete de todos modos, que es como pensé que funcionan.


Como se dijo, use getSharedPreferences(String name, int mode) lugar de getPreferences (int mode) . Específicamente, si está interesado, la documentación de estos dos métodos ilustra la diferencia. De acuerdo con la documentación de Android, getPreferences(int) hace lo siguiente:

Recupere un objeto SharedPreferences para acceder a las preferencias que son privadas para esta actividad. Esto simplemente llama al método subyacente getSharedPreferences (String, int) pasando el nombre de clase de esta actividad como el nombre de las preferencias.


Deberias usar esto

SharedPreferences pref = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE);

O

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);


Está utilizando getPreferences (MODE) . Utilice getSharedPreferences ("PREF_NAME", MODE) en su lugar. De esta manera, proporcionará un nombre a una preferencia particular y luego podrá llamarlo por su nombre (PREF_NAME aquí) desde cualquier actividad que desee.

//------get sharedPreferences SharedPreferences pref = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE); //-------get a value from them pref.getString("NAME", "Android"); //--------modify the value pref.edit().putString("NAME", "Simone").commit(); //--------reset preferences pref.edit().clear().commit();


Si no estás haciendo nada sofisticado con las preferencias, solo usaría la forma predeterminada de acceder a ellas. Parece ser tu problema

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

Aquí hay una gran escritura con más detalle, puesto que estás haciendo todo bastante bien, excepto por el manejo. ¿Cómo obtengo las SharedPreferences de una actividad de preferencia en Android?

TAMBIÉN: No olvide que la nueva forma es llamar a .apply () en lugar de a .commit () Esto estaba en uno de los videos de # io2012 ..


Si tuviste el mismo problema que yo, es muy simple. Cuando vayas a guardar las preferencias, guárdalo así:

SharedPreferences sp = getSharedPrefenreces("Preference",MODE_PRIVATE);

Y no:

SharedPreferences sp = getSharedPrefenreces("Preference''s name",Context.MODE_PRIVATE);

Sé lo importante que es el Compartimiento de Preferencias en algunos casos.