Intereting Posts
Можем ли мы подключиться к iPhone с устройства Android, хотя и не в той же сети? Android – сжать растровое изображение перед сохранением его в SDCARD в действии для результата Как проверить производительность приложения для Android? Почему onDestroy () вызывается при запуске уведомления? Как предотвратить это? Получить контактную фотографию в андроиде Как проверить двойное значение пусто или нет Пример прослушивателя в Интернете Android Как просмотреть xml drawable? WebRTC Native API для Android Выровняйте верхнюю часть представления в нижней части другого вида в RelativeLayout Усиливает ли Android ProximityAlert или Geofence больше батареи, когда телефон находится ближе к контролируемому местоположению? Оценка услуги радиомаяков в фоновом режиме Позволяет только моим приложениям для Android запускать API конечной точки в java Что такое эквивалент BlackBerry для компонента Androids WebView? Gradle: ошибка: незаконный unicode escape

SharedPreferences не работает во всех видах деятельности

Я пытаюсь сохранить некоторые фильтры / состояние в одном действии, а затем использовать эти данные в следующем действии.

Я использую SharedPreferences, но он не работает так, как я ожидал.

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"; } } 

Затем действие, которое должно использовать это предпочтение:

 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); } } 

Но выход я получаю:

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

Может ли кто-нибудь сказать мне, что я делаю неправильно здесь?

Я развиваюсь против уровня API-8.

В следующих двух строках,

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

SharedPreferences.Editor два разных SharedPreferences.Editor . Следовательно, ценность не совершается. Вместо этого вы должны использовать:

 SharedPreferences.Editor spe = preferences.edit(); spe.putString(PreferenceKey.DISTANCE, distance); spe.commit();