java – SharedPreferences无法跨活动工作
发布时间:2020-12-15 08:39:11 所属栏目:Java 来源:网络整理
导读:我正在尝试在一个活动中保存一些过滤器/状态,然后在下一个活动中使用该数据. 我正在使用SharedPreferences,但它没有像我预期的那样工作. public class FilterActivity extends Activity { private static final String TAG = FilterActivity.class.getName()
我正在尝试在一个活动中保存一些过滤器/状态,然后在下一个活动中使用该数据.
我正在使用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"; } } 然后,应该使用此首选项的Activity: 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 Level-8进行开发. 解决方法
在以下两行中,
preferences.edit().putString(PreferenceKey.DISTANCE,distance); preferences.edit().commit(); 正在返回两个不同的SharedPreferences.Editors.因此,价值没有得到承诺.相反,你必须使用: SharedPreferences.Editor spe = preferences.edit(); spe.putString(PreferenceKey.DISTANCE,distance); spe.commit(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |