sharedPreferences no compartirá entre las actividades

Estoy intentando usar SharedPreferences para guardar la configuración. Pero no puedo conseguir los datos para ser compartidos entre cualquiera de mis actividades. El código que estoy usando se las arregla para guardar la configuración, pero cada actividad parece tener su propia versión de cada variable.

Así por ejemplo. Tengo una actividad de ajustes de audio en la que el usuario puede dar un valor a una variable "musicVolume" que se guarda. Si cierro el juego y lo vuelvo a cargar, la actividad de ajustes de audio "recuerda" el valor. Pero si intento 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 sólo parecen 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 muy novato programador oo. Traté de seguir el consejo de otro hilo

Preferencias compartidas de Android

pero dondequiera que traté de poner las líneas

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

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

Está utilizando getPreferences (MODE) . Use getSharedPreferences ("PREF_NAME", MODE) en su lugar. De esta forma, proporcionará un nombre a una preferencia particular y podrá llamarla por su nombre (PREF_NAME aquí), independientemente de la 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(); 

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. Según 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 la clase de esta actividad como nombre de preferencias.

Si usted no está haciendo nada extravagante con preferencias yo sólo usaría la forma predeterminada de acceder a ellos. Parece ser tu problema.

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 

Aquí está una gran escritura con más detalle, poner usted está haciendo todo bastante bien correctamente excepto para conseguir su manija. ¿Cómo obtengo las SharedPreferences de una preferenciaActivity en Android?

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

Usted debe usar esto

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

O

 SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); 

Si usted tenía el problema de algunos como yo, es muy simple. Cuando vayas a guardar las preferencias, guarda como:

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

Y no:

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

Sé cuánto es importante el SharedPrefenrences en algunos casos.

  • Ajuste del sonido para la notificación
  • ¿Cómo uso las preferencias de los fragmentos con ViewPager?
  • SharedUserId: seguro para cambiar cuando la aplicación ya está en el mercado?
  • Cómo cambiar el valor de preferencia compartida de Android de String a Int
  • Android SharedPreferences, cómo guardar una variable int simple
  • Ajuste el botón Visible en otro acticty con la configuración de Preferencias
  • Cómo almacenar Hashmap en Android para que se reutilice cuando la aplicación se reinicie con las preferencias compartidas?
  • Las Preferencias compartidas se pierden después de cerrar el dispositivo o de matar la aplicación.
  • Cuando una aplicación se mueve forzadamente a SD-Card, ¿dónde van SharedPreferences?
  • Android SharedPreferences después de reiniciar el dispositivo
  • Cómo guardar un mapa hash en Preferencias compartidas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.