SharedPreferences no funciona en todas las actividades

Estoy tratando de guardar algunos filtros / estado en una actividad, y luego utilizar esos datos en la siguiente actividad.

Estoy usando SharedPreferences, pero no funciona como lo esperaba.

public class FilterActivity extends Activity { private static final String TAG = FilterActivity.class.getName(); EditText distanceEditor; @Override public void onPause() { super.onPause(); SharedPreferences preferences = getSharedPreferences(PreferenceKey.FILTER_PREFERENCES_NAME, MODE_WORLD_READABLE); String distance = distanceEditor.getText().toString(); preferences.edit().putString(PreferenceKey.DISTANCE, distance); preferences.edit().commit(); Log.i(TAG, "Wrote max-distance=" + distance); Log.i(TAG, "Preferences contains distance=" + preferences.getString(PreferenceKey.DISTANCE, "FAIL")); } public static class PreferenceKey { public static final String FILTER_PREFERENCES_NAME = "FilterActivity:" + "Filter_Preference_File"; public static final String DISTANCE = "FilterActivity:" + "DISTANCE"; } } 

Entonces, la Actividad que debería usar esta preferencia:

 public class MapActivity extends MapActivity { @Override public void onResume() { super.onResume(); SharedPreferences preferences = getSharedPreferences(FilterActivity.PreferenceKey.FILTER_PREFERENCES_NAME, MODE_WORLD_READABLE); String maxDistance = preferences.getString(FilterActivity.PreferenceKey.DISTANCE, "FAIL"); Log.i(TAG, "Read max-distance=" + maxDistance); } } 

Pero la salida que consigo es:

 .FilterActivity( 4847): Wrote max-distance=99.9 .FilterActivity( 4847): Preferences contains distance=FAIL .MapActivity( 4847): Read max-distance=FAIL 

¿Puede alguien decirme lo que estoy haciendo mal aquí?

Estoy desarrollando contra API Nivel-8.

En las dos líneas siguientes,

 preferences.edit().putString(PreferenceKey.DISTANCE, distance); preferences.edit().commit(); 

dos diferentes SharedPreferences.Editor s están siendo devueltos. Por lo tanto, el valor no está siendo comprometido. En su lugar, tiene que utilizar:

 SharedPreferences.Editor spe = preferences.edit(); spe.putString(PreferenceKey.DISTANCE, distance); spe.commit(); 
  • Uso de SharedPreferences con diferentes contextos
  • Cifrar datos en SharedPreferences
  • Cómo guardar un paquete completo en SharedPreferences
  • Cómo cambiar los valores en la preferencia compartida
  • ¿Puede alguien explicar cómo SharedPreferences almacena un conjunto de cadenas
  • ¿Cómo uso las preferencias de los fragmentos con ViewPager?
  • sharedPreferences no compartirá entre las actividades
  • Samsung y Android 2.2.1 compartido pref cuestión
  • Artículos de preferencia e intenciones explícitas
  • Preferencias compartidas entre dos procesos de la misma aplicación
  • Guardar el estado cuando se pulsa el botón Atrás
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.